




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计模式读书笔记-外观模式 前面介绍的适配器模式(设计模式读书笔记-适配器模式)讲的是如何将一个接口转换成客户所需要的另一个接口,它的目的在于解决接口的不兼容性问题。现在这里有这样一个模式,它的目的在于如何简化接口,它可以将多个类的复杂的一切隐藏在背后,只显露出一个干净美观的外观。 晚上睡觉之前,你总是喜欢看电视,在你进入卧室的时候你需要完成以下几个步骤:打开电灯、打开空调、放心银幕(假如你家有)、打开电视通过这么些繁琐的步骤后你终于可以看电视了,但是你要睡觉了呢?又要去进行繁琐的关闭动作。这里你就需要一个外观模式了,通过实现一个更加合理的接口外观类将这些动作都包装起来,实现一键“看电视”、一键“关电视”。这就是外观模式的动机 一、模式定义 所谓外观模式就是提供一个统一的接口,用来访问子系统中的一群接口。 外观模式定义了一个高层接口,让子系统更容易使用。如下图,是使用外观模式后将子系统的使用变得更加简单。 在引入外观模式后,客户只需要与外观角色打交道,客户与子系统的复杂关系有外观角色来实现,从而降低了系统的耦合度。二、模式结构 外观模式包含如下两个角色: Facade: 外观角色 SubSystem:子系统角色 三、模式实现 场景就是上面那个“睡觉看电视”的场景。 实例的UML图 首先是四个组件(电视、电灯、空调、银幕)1 public class Television 2 public void on()3 System.out.println(打开了电视.);4 5 6 public void off()7 System.out.println(关闭了电视.);8 9 1 public class Light 2 public void on()3 System.out.println(打开了电灯.);4 5 6 public void off()7 System.out.println(关闭了电灯.);8 9 1 public class AirCondition 2 public void on()3 System.out.println(打开了空调.);4 5 6 public void off()7 System.out.println(关闭了空调.);8 9 1 public class Screen 2 public void up()3 System.out.println(升起银幕.);4 5 6 public void down()7 System.out.println(下降银幕.); 8 9 然后是比较强大、干净、美观的外观1 public class WatchTvSwtichFacade 2 Light light; 3 AirCondition ac; 4 Television tv; 5 Screen screen; 6 7 public WatchTvSwtichFacade(Light light,AirCondition ac,Television tv,Screen screen) 8 this.light = light; 9 this.ac = ac;10 this.tv = tv;11 this.screen = screen;12 13 14 public void on()15 light.on(); /首先开灯16 ac.on(); /然后是打开空调17 screen.down(); /把银幕降下来18 tv.on(); /最后是打开电视19 20 21 public void off()22 tv.off(); /首先关闭电视机23 screen.up(); /银幕升上去24 ac.off(); /空调关闭25 light.off(); /最后关灯26 27 客户端1 public class Client 2 public static void main(String args) 3 /实例化组件 4 Light light = new Light(); 5 Television tv = new Television(); 6 AirCondition ac = new AirCondition(); 7 Screen screen = new Screen(); 8 9 WatchTvSwtichFacade watchTv = new WatchTvSwtichFacade(light, ac, tv, screen);10 11 watchTv.on();12 System.out.println(-可以看电视了.);13 watchTv.off();14 System.out.println(-可以睡觉了.);15 16 运行结果 从上面的使用通过使用外观模式,客户可以非常方便的实现比较复杂的功能。 四、模式优缺点 优点 1、引入外观模式,是客户对子系统的使用变得简单了,减少了与子系统的关联对象,实现了子系统与客户之间的松耦合关系。 2、只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类 3、降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程 缺点 1、不能很好地限制客户使用子系统类,如果对客户访问子系统类做太多的限制则减少了可变性和灵活性 2、在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则” 五、使用场景 1、当要为一个复杂子系统提供一个简单接口时可以使用外观模式。 2、客户程序与多个子系统之间存在很大的依赖性。引入外观类将子系统与客户以及其他子系统解耦,可以提高子系统的独立性和可移植性 六、模式总结 1、 外观模式的主要优点就在于减少了客户与子系统之间的关联对象,使用客户对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年调脂抗动脉粥样硬化药项目合作计划书
- 2025金华金开招商招才服务集团有限公司招聘5人模拟试卷及答案详解(名校卷)
- 2025年杭州市余杭区卫生健康系统事业单位招聘编外工作人员73人考前自测高频考点模拟试题含答案详解
- 2025年燃气输配设备项目合作计划书
- 2025河南师范大学物理学院诚聘英才模拟试卷及答案详解(名校卷)
- 2025年编辑加工软件项目合作计划书
- 2025年烟台莱州市卫健系统所属事业单位公开招聘工作人员(47人)模拟试卷及答案详解参考
- 2025福建福州市罗源县卫健系统事业单位招聘编内卫技人员41人考前自测高频考点模拟试题及答案详解(考点梳理)
- 合作协议书集合7篇
- 2025贵州安顺市紫云苗族布依族自治县利源融资担保有限责任公司招聘1人模拟试卷带答案详解
- ps课件教学课件
- 桥梁亮化工程施工方案
- 《环境影响评价》第一章 环境影响评价的概念课堂讲义
- 2024年中级注册安全工程师《安全生产法律法规》真题及答案
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理体系 审核与认证机构要求》中文版(机翻)
- 八年级物理上册期中考试卷及答案【A4打印版】
- 防盗门订货合同范本
- 教科版科学四年级上册第一单元《声音》测试卷含答案(典型题)
- 《名著阅读 艾青诗选》核心素养课件1(第2课时)
- 人工智能在船舶工程中的应用展望
- 高中化学教师培训课件
评论
0/150
提交评论