`
king_tt
  • 浏览: 2112304 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式 外观模式 一键电影模式

 
阅读更多

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25837275

这个模式比较简单,嘿嘿,简单写一下。

老样子,先看外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。其实就是为了方便客户的使用,把一群操作,封装成一个方法。

举个例子:我比较喜欢看电影,于是买了投影仪、电脑、音响、设计了房间的灯光、买了爆米花机,然后我想看电影的时候,我需要:

1、打开爆米花机

2、制作爆米花

3、将灯光调暗

4、打开投影仪

5、放下投影仪投影区

6、打开电脑

7、打开播放器

8、将播放器音调设为环绕立体声

...

尼玛,花了一笔钱,看电影还要这么多的步骤,太累了,而且看完还要一个一个关掉。

所有,我们使用外观模式解决这些复杂的步骤,轻松享受电影:

package com.zhy.pattern.facade;

public class HomeTheaterFacade
{
	private Computer computer;
	private Player player;
	private Light light;
	private Projector projector;
	private PopcornPopper popper;

	public HomeTheaterFacade(Computer computer, Player player, Light light, Projector projector, PopcornPopper popper)
	{
		this.computer = computer;
		this.player = player;
		this.light = light;
		this.projector = projector;
		this.popper = popper;
	}

	public void watchMovie()
	{
		/**
		 *  1、打开爆米花机
			2、制作爆米花
			3、将灯光调暗
			4、打开投影仪
			5、放下投影仪投影区
			6、打开电脑
			7、打开播放器
			8、将播放器音调设为环绕立体声
		 */
		popper.on();
		popper.makePopcorn();
		light.down();
		projector.on();
		projector.open();
		computer.on();
		player.on();
		player.make3DListener();
	}
	
	public void stopMovie()
	{
		popper.off();
		popper.stopMakePopcorn();
		light.up();
		projector.close();
		projector.off();
		player.off();
		computer.off();
	}
}

可以看到,我们定义了一个类,然后可以让我一键享受看电影了,看完,一键关闭,享受多了。

外观模式:一般用于需要简化一个很大的接口,或者一群复杂的接口的时候。


这个模式比较容易理解,就不多说了,最后附上类图:



好了,恭喜你,你又学会了一个设计模式,外观模式(Facade Pattern)。



分享到:
评论

相关推荐

    小程序运营管理系统源码 自由DIY布局 一键生成小程序.rar

    分销模块:帮助企业快速搭建企业独立在线商城,自由选择分销模式,从多方位,多角度提供服务支持,助力商户实现分销渠道裂变销货,连锁门店线上化高效经营。 消息通知:设置商品状态通知、成团通知、预约预定通知、...

    小程序运营管理系统源码.zip

    分销模块:帮助企业快速搭建企业独立在线商城,自由选择分销模式,从多方位,多角度提供服务支持,助力商户实现分销渠道裂变销货,连锁门店线上化高效经营。 消息通知:设置商品状态通知、成团通知、预约预定通知、系统...

    智能家居系统设计方案.doc

    智能系统设计的原则: 用户需要操作方便,功能实用,外观美观大方的智能家居系统。系统要有吸引来宾的外观 和功能,能体现用户高人一等的生活品位。同时要化繁为简、高度人性、注重健康、娱 乐生活、保护私密。 系统...

    公共广播系统设计方案.doc

    全新 编程模式,8个主程序,1个特殊备用程序,一键调用当天与明天程序运行,并可预设晴雨天 运行模式。同时内置MP3播放器,采用高达4G内存的SD卡存储MP3音频,同时可实现外控 十分区矩阵器,实现多达160分区控制功能,...

    智能家居系统方案设计.doc

    智能系统设计的原则: 用户需要操作方便,功能实用,外观美观大方的智能家居系统。系统要有吸引来宾的外 观和功能,能体现用户高人一等的生活品位。同时要化繁为简、高度人性、注重健康、 娱乐生活、保护私密。 ...

    智能停车场解决方案.doc

    外观设计高贵典雅,融入更多的中国文化元素,以艺术品的眼光来打造新一代高端智能 化产品。 集成度高,兼顾模块化设计,外部连线少,安装维护简单。 控制机采用TCP/IP高速数据通讯,同时兼顾RS485总线,满足不同...

    多媒体设备报价清单.doc

    多媒体设备报价清单 序号 "名称 "品牌 "型号 "技术参数 "数量 "单位 "单价 "总价 "质保期 " "1 "智慧黑板 "ODIN "DC860NH " 提供原厂... 智慧黑板支持HDMI、VGA、TV、window等多种信号源模式下支持全屏开关、窗口一键下

    timmi-ess-fusion:用于提高ESS时间表可用性的用户脚本

    :face_screaming_in_fear: 特征全屏模式摆脱滚动条Chrome和Firefox支持查看已保存,已发布,已批准和拒绝的颜色日标题正确对齐收藏夹保存工作项给他们起有意义的名字一键选择工作列表顶部的它们设计ESS在所有浏览器...

    Too Naughty网址导航主题-PHP

    特点:纯净的导航界面(去繁求简)响应式设计的前端设计聚合式搜索框(一键切换百度,搜狗,360,必应搜索平台)用户可自行申请收录,由管理员后台审核文章管理发布功能每篇文章均有评论功能首页引用热门和推荐榜单...

    阿香婆照片优化工具 Ashampoo Photo Optimizer 7.0.2 中文多语版.zip

    提供多种图像优化功能,有两种类型模式:自动优化模板和手动优化。 Ashampoo Photo Optimizer 7 有了崭新的精美外观。整个用户界面都经过了“整容”。现在其结构和布局更加清晰合理,让你能更立即上手优化图片。...

    uBlogger:专为读者而设计的模板

    由于这三个主题的外观相似,因此如果您对它们的差异有疑问,请阅读以便选择最适合自己的主题。 :warning: 提供给使用LoveIt主题的人的信息 :warning: 如果您不了解LoveIt,请跳至下一部分 如果您使用过LoveIt主题...

    笔记本最好买这样的!

    一键安静模式,杜比音效2.1音响体系,静电感应式多媒体触控操作,娱乐飞梭音场控制,HDMI高清输出端口,全球联保,金牌售后(联想的售后是所有本本中最好的 ) 6000左右(龙城专利,拷贝别人内存可耻)。 要是想买...

    vc++ 开发实例源码包

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    vc++ 应用源码包_1

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    vc++ 应用源码包_2

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    vc++ 应用源码包_6

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    vc++ 应用源码包_3

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    vc++ 应用源码包_5

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    交友相亲社交网站模板支持手机wap版

    多元化和清晰的界面设置使得系统的外观十分的友好。用户可以在交友网上注册资料、上传照片等,同时也可以自由设定年龄、地区、身高等各种搜索条件,查看其他会员的资料和相片。遇到心仪的会员,用户可以向会员发送站...

Global site tag (gtag.js) - Google Analytics