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

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

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

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

1、打开爆米花机

2、制作爆米花

3、将灯光调暗

4、打开投影仪

5、放下投影仪投影区

6、打开电脑

7、打开播放器

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

...

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

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

[java] view plaincopy
  1. package com.zhy.pattern.facade;
  2. public class HomeTheaterFacade
  3. {
  4. private Computer computer;
  5. private Player player;
  6. private Light light;
  7. private Projector projector;
  8. private PopcornPopper popper;
  9. public HomeTheaterFacade(Computer computer, Player player, Light light, Projector projector, PopcornPopper popper)
  10. {
  11. this.computer = computer;
  12. this.player = player;
  13. this.light = light;
  14. this.projector = projector;
  15. this.popper = popper;
  16. }
  17. public void watchMovie()
  18. {
  19. /**
  20. *  1、打开爆米花机
  21. 2、制作爆米花
  22. 3、将灯光调暗
  23. 4、打开投影仪
  24. 5、放下投影仪投影区
  25. 6、打开电脑
  26. 7、打开播放器
  27. 8、将播放器音调设为环绕立体声
  28. */
  29. popper.on();
  30. popper.makePopcorn();
  31. light.down();
  32. projector.on();
  33. projector.open();
  34. computer.on();
  35. player.on();
  36. player.make3DListener();
  37. }
  38. public void stopMovie()
  39. {
  40. popper.off();
  41. popper.stopMakePopcorn();
  42. light.up();
  43. projector.close();
  44. projector.off();
  45. player.off();
  46. computer.off();
  47. }
  48. }

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

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

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

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

设计模式 外观模式 一键电影模式相关推荐

  1. 8. 设计模式 外观模式 一键电影模式

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

  2. 设计模式——外观(门面)模式 ,即包装

    一.外观(门面)模式 定义: 为子系统的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用). 引例: 把病人和医院作为一个子系统,按照职 ...

  3. “戏”说设计模式——外观(门面)模式

    首先请出今天的主人公--"黑旋风"李逵 李逵:"我是不是萌萌哒?" 一部<水浒传>说尽了一群英雄好汉的悲欢离合!经典著作的水浒,含蓄地概括了中国各个 ...

  4. Java设计模式(四):结构性模式(适配器模式、桥接模式、装饰模式、组合模式、外观模式、亨元模式、代理模式)

    目录 一· 适配器设计模式 1.1 现实生活中的适配器例子 1.2 基本介绍 1.3 工作原理 1.4 类适配器模式 1.5 对象适配器模式 1.6 接口适配器模式 1.7 适配器模式在 Spring ...

  5. 设计模式 - 外观模式

    什么是外观模式? 定义了一个高层.统一的接口,外部与通过这个统一的接口对子系统中的一群接口进行访问.通过创建一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以通过调用外观类的方法来调用内部子 ...

  6. Python设计模式-外观模式

    Python设计模式-外观模式 代码基于3.5.2,代码如下; #coding:utf-8 # 外观模式class AlarmSensor:def run(self):print("Alar ...

  7. Java设计模式(装饰者模式-组合模式-外观模式-享元模式)

    Java设计模式Ⅳ 1.装饰者模式 1.1 装饰者模式概述 1.2 代码理解 2.组合模式 2.1 组合模式概述 2.2 代码理解 3.外观模式 3.1 外观模式概述 3.2 代码理解 4.享元模式 ...

  8. 设计模式笔记 10.Facade 外观模式(结构型模式)

    10. Facade 外观模式      2008-8-18 动机(Motivation) 上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种 ...

  9. 设计模式C++实现(7)——外观模式、组合模式

    软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.设计模式中运用了面向对象编程语言的重要特性:封装.继承.多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累.最 ...

最新文章

  1. Android--用手指移动画面里的照片/onTouchEvent事件判断
  2. MAT之SVM/BP:SVR(better)和BP两种方法比较且实现建筑物钢筋混凝土抗压强度预测
  3. Centos7 安装Mysql5.7
  4. 使用QP方法解基于五次多项式形式的cost function minimization问题
  5. 苹果将明年上半年iPhone出货量目标提高 30%
  6. 535 Login Fail. Please enter your authorization code to login. More information in http://service.ma
  7. docker 搭建 web_《SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用》
  8. 小白使用ubuntu杂记
  9. linux给进程加速,Linux 利用并行进程加速命令执行
  10. 作为测试人员,这些工具不会真不行
  11. 傅里叶变换的终极解释上
  12. 在MingW下编译llvm/clang
  13. ARM正式发布v9架构,确认可供应华为,不受美国出口管制约束
  14. javaweb教程 javaweb项目路径总结
  15. Java前后端分离处理跨域请求与Nginx跨域配置
  16. 2021年高压电工考试题及高压电工理论考试
  17. 使用mysql打开什么文件格式_dbf是什么文件怎么打开
  18. C基础(三)函数的使用
  19. 云呐|动环监控设备维护与常见故障处理
  20. 微信学习:我的学习测试环境(刚看我的DZd动力空间后台,发现推荐后双方有30软妹币福利,双赢哦)

热门文章

  1. robomaster视觉规则细谈
  2. 腾讯搜搜高管吴军离职的传闻与真相
  3. 中国汽车变速箱行业发展趋势预测与前景策略分析报告2021年版
  4. 使用Python在Markdown插入图片并自动获取链接
  5. 诸侯安置 简单的递推
  6. RF MEMS开关时代将开启-30?
  7. 河南移动物联网建设加速 亿元级市场呼之欲出
  8. Key Points about ActiveSupport::Concern
  9. C 语言常量pi,如何在C中使用PI常数
  10. 漫画大全《女帝的后宫》