关闭

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

标签: 设计模式外观模式Facade
9096人阅读 评论(15) 收藏 举报
分类:

注:文章参考《head first设计模式》一书,非常值得学习的一本书。

转载请标明出处: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)。





40
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

这个模式比较简单,嘿嘿,简单写一下。 老样子,先看 外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。其实就是...
  • lmj623565791
  • lmj623565791
  • 2014-05-14 22:51
  • 9096

Java设计模式之九--外观模式(一键电影模式)

前言:心随我动! 转载出处:http://blog.csdn.NET/lmj623565791/article/details/25837275 这个模式比较简单,嘿嘿,简单写一下。 老样子,...
  • wu371894545
  • wu371894545
  • 2016-12-26 20:39
  • 10134

最常用的设计模式---外观模式(C++实现)

外观模式:提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。目地:让接口变得简单,是为了简化子系统的接口。
  • lh844386434
  • lh844386434
  • 2014-01-09 17:25
  • 1618

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

设计模式 外观模式
  • u013651026
  • u013651026
  • 2017-12-15 16:35
  • 34

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

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25837275 这个模式比较简单,嘿嘿,简单写一下。 老样子,先看 外...
  • qq_32523587
  • qq_32523587
  • 2017-05-30 22:11
  • 128

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

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25837275 这个模式比较简单,嘿嘿,简单写一下。 老样子,先看 外...
  • walid1992
  • walid1992
  • 2016-05-22 08:34
  • 325

JAVA设计模式:外观(Facade)

外观模式为子系统中的一组接口提供一个一致的界面。Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。        网上有许多安保系统应用外观模式的例子,在这里我举一个客服中心的...
  • fancy888
  • fancy888
  • 2012-07-13 12:43
  • 672

《HeadFirst设计模式》书摘-单例/命令/适配器/外观

单例模式 定义 确保一个类只有一个实例,并提供全局访问点 要点 单例模式也提供访问这个实例的全局点在java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量确定在性能...
  • wangnan9279
  • wangnan9279
  • 2017-06-23 16:19
  • 125

C#设计模式之外观

IronMan之外观模式   接着上篇观察者内容的“剧情”,没看过的朋友也没关系,篇幅之间有衔接的关系但是影响不大。 需求: 为"兵工厂"提供各种支持,生产了各式各样的"IronMan",因为...
  • JinYuan0829
  • JinYuan0829
  • 2014-05-10 19:53
  • 592

设计模式之外观模式案例代码

  • 2013-04-01 00:42
  • 2KB
  • 下载
    个人资料
    • 访问:17922293次
    • 积分:51373
    • 等级:
    • 排名:第66名
    • 原创:205篇
    • 转载:0篇
    • 译文:6篇
    • 评论:15630条
    我的微信公众号
    联系方式


    QQ群:
    • 55032675
    • 423372824
    • 497438697
    • 请勿重复加群,Thx
    博客专栏
    统计