- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式 - 外观模式精选
HYPERLINK /chenssy/p/3209451.html设计模式读书笔记-----外观模式
前面介绍的适配器模式(设计模式读书笔记-----适配器模式)讲的是如何将一个接口转换成客户所需要的另一个接口,它的目的在于
解决接口的不兼容性问题。现在这里有这样一个模式,它的目的在于如何简化接口,它可以将多个类的复杂的一切隐藏在背后,只显露
出一个干净美观的外观。
晚上睡觉之前,你总是喜欢看电视,在你进入卧室的时候你需要完成以下几个步骤:打开电灯、打开空调、放心银幕(假如你家
有)、打开电视通过这么些繁琐的步骤后你终于可以看电视了,但是你要睡觉了呢?又要去进行繁琐的关闭动作。这里你就需要一个外观
模式了,通过实现一个更加合理的接口外观类将这些动作都包装起来,实现一键“看电视”、一键“关电视”。这就是外观模式的动机
一、模式定义
所谓外观模式就是提供一个统一的接口,用来访问子系统中的一群接口。
外观模式定义了一个高层接口,让子系统更容易使用。如下图,是使用外观模式后将子系统的使用变得更加简单。
在引入外观模式后,客户只需要与外观角色打交道,客户与子系统的复杂关系有外观角色来实现,从而降低了系统的耦合度。
二、模式结构
外观模式包含如下两个角色:
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
文档评论(0)