一、引言

外观模式是什么,为什么有外观模式?外观模式怎么实现?
1.外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
2.目的只有一个,提供一个方法供用户调用,隐藏它的细节。

二、实现外观模式

假设你现在要在家里看电影,为了更好的体验生活,你需要做以下几个不走

  1. 开电视机
  2. 开瓶啤酒
  3. 调灯光

在外观模式的情况下,我们只需要把这三个动作交给一个类来实现,调用这个类的看电影方法即可。类图如下:

相当于在用户和各种设备中间加了一层:外观类,统一对电视机,啤酒,灯光进行调用。
代码如下:

//电视机
public class TV {public void open(){System.out.println("打开电视机");}
}//啤酒
public class Piper {public void open(){System.out.println("打开啤酒");}
}//灯光
public class Light {public void open(){System.out.println("打开灯光");}
}/*** 外观类*/
public class Maker {private TV tv=new TV();private Piper piper=new Piper();private Light light=new Light();public void open(){tv.open();piper.open();light.open();}
}//Main方法
public static void main(String[] args) {//此时我不再调用三种设备,直接调用外观类open,即可完成看电影Maker maker = new Maker();maker.open();}

运行结果如下:

三、结束

外观模式很简单,就是在各个模块中间加一次达到隐藏系统的复杂性,但是外观模式不符合开闭原则,如果要修改程序非常麻烦,所以慎用。

门面担当——外观模式相关推荐

  1. 设计模式之外观模式(Facade)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  2. 设计模式C#实现(三)——外观模式

    外观模式--提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口让子系统更容易使用. 一个外观包含了为许多对象和对他们的操作,使得重复这些操作更方便. 假如客厅里有灯(Lights ...

  3. [设计模式]外观模式

    1. 定义 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更加容易使用. 外观不仅简化了系统内接口的使用,也将客户从组件中的子系统中解耦,外观和适配器都可 ...

  4. 外观模式 - 设计模式学习

    外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 怎么叫更加容易使用呢?多个方法变成一个方法,在外观看来,只需知道这个功 ...

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

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

  6. 设计模式之外观模式php,php设计模式(十五)外观模式

    外观模式又叫门面模式: 现在都是模块化开发了: 开发中很多时候都是在使用各种扩展包: 或者在外观模式中我们叫做子系统: 外观模式的作用就是减少子系统之间的耦合: 降低子系统的使用难度: 我们举个栗子: ...

  7. PHP设计模式 外观模式(Facade)

    外观模式(Facade Pattern):外部与子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口是的这一个子系统更加容易使用.外 ...

  8. 漫画:设计模式之 “外观模式”

    作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) -----  第二天  ----- ------------ 首先,肯德基提供了众多基础菜品,比如鸡翅.汉堡.薯条. ...

  9. 十一:外观模式详解(Service,action与dao)

    定义:外观模式是软件工程中常用的一种软件设计模式.它为子系统中的一组接口提供一个统一的高层接口.这一接口使得子系统更加容易使用. 该定义引自百度百科,它的表现很简单,将一系列子接口的功能进行整理,从而 ...

  10. 设计模式--外观模式

    外观模式(Facade),为子系统中的一组接口提供一个一直的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 转载于:https://www.cnblogs.com/sun-spa ...

最新文章

  1. 在公司中,如何提升自己的段位,脱颖而出
  2. CVPR 2022 | 阿里达摩院新技术,美体塑形一键就成
  3. K155ID1辉光管驱动芯片功能测试
  4. 百万大数据架构师学习笔记
  5. 如图所示是一种轧钢计算机控制系统,高速线材厂轧钢工艺培训(活套)
  6. 情报领域因果推理智能项目概览:以DAPAR为例
  7. Linux四种共享内存技术(附源码):SystemV、POSIX mmap、memfd_create、dma-buf
  8. pytorch一天速成第一部分——基础入门Tensor和cuda
  9. js将时间转换为时间戳
  10. WeixinJSBridge目前还能够直接使用的功能(2019)
  11. mac composer 安装
  12. while循环python次数定义_Python学习笔记之While循环用法分析
  13. 怎么设置服务器共享文件夹在哪里设置密码,共享文件夹怎么设置密码
  14. 熟悉RT-Thread的软硬件环境【RT-Thread学习笔记 1】
  15. 未来的计算机 展望未来作文,展望未来作文(通用5篇)
  16. The tomcat server configuration at /sever/tomcat v9.0 localhost-config is.......错误解析
  17. 一招连环追销,让顾客在第一次成交中买多个产品,客单价提高十倍
  18. 联邦学习开源框架简介
  19. 成本中心主数据维护及其导致常见报错解析(如:消息号 KI261 成本中心 / 冻结而不能直接对 收入记帐)
  20. 如何下载西门子PLC的CAD图库

热门文章

  1. yolo数据集标注软件安装+使用流程
  2. recoil error Cannot assign to read only property of object ‘#‘
  3. 虚拟机安装Windows7系统(亲测超详细)
  4. 3.16√ 火车调度站的入口处有n节硬席或软席车厢(分别以H和S表示)等待调度,试编写算法,输出对这n节车厢进行调度的操作
  5. 不一样的xss payload
  6. ps在当前的图片添加一张图片进来
  7. JAVA面试题《下》
  8. 立创EDA——PCB的布局(四)
  9. 山西医科大学计算机部,山西医科大学医学计算机教学改革探讨.pdf
  10. win10系统的深度清理方法