设计模式之门面模式(外观模式)
创始人
2024-05-31 23:32:04
0

目录

1.模式定义

2.应用场景     

2.1 电源总开关例子

2.2 股民炒股场景

​编辑

 3. 实例如下

4. 门面模式的优缺点

传送门:

项目中用到的责任链模式

给对象讲工厂模式,必须易懂易会

策略模式,工作中你用上了吗?


1.模式定义

《图说设计模式》

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

《设计模式之禅》:

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。

2.应用场景     

    看到两个 很好的例子,如下:

2.1 电源总开关例子

一个电源总开关可以控制所有电器的打开或关闭状态。

无论是空调、冰箱、电视、电脑、风扇等等,只要是电器都受这个电闸控制。只要这个电闸将关闭,所有的电器都会受到牵连(一同关闭)。电源总开关(电闸)即为该系统的外观模式设计。

2.2 股民炒股场景

股民炒股需要了解股票、国债、房产情况,需要参与这些项目的具体买和卖,耦合性很高。一种解决办法就是,交给专业的机构操作,买基金。

 3. 实例如下

比如,我们家里现在有空调、冰箱、电脑这么几个电器


// 冰箱
public class Fridge {// 关闭冰箱public void turnOff() {}// 开冰箱灯..减低冰箱温度..调高冰箱温度...
}// 电视
public class Television {// 关闭电视public void turnOffTV() {System.out.println("关闭电视");}// 切换电视节目..减低电视声音..调高电视声音...public void doSomething() {System.out.println("切换电视节目..减低电视声音..调高电视声音...");}
}// 电脑
public class Computer {// 关闭电脑public void turnOffComputer() {System.out.println("关闭电脑");}// 使用电脑干别的事~public void doSomething() {System.out.println("使用电脑干别的事~");}} 

如果没有电闸的的情况下,我想将上面的电器关闭掉,我需要这样干:

// 我要关闭电视、电脑、空调public static void main(String[] args) {new Computer().turnOffComputer();new Fridge().turnOffFridge();new Television().turnOffTV();// 当然了,一个正常的家庭不单单只有这么点电器的。// 如果某一天我想关闭家里所有的电器,就需要重复new 个对象,调用其turn offer方法} 

一个一个关是不是很麻烦,所以我们就有了电闸:


// 电闸
public class ElectricBrake {private Computer computer = new Computer();private Fridge fridge = new Fridge();private Television television = new Television();// 关闭所有电器public void turnOffAll() {computer.turnOffComputer();fridge.turnOffFridge();television.turnOffTV();}
} 

当我们想关闭所有电器的时候,我们可以使用电闸来关闭。


// 我要关闭所有电器public static void main(String[] args) {ElectricBrake brake = new ElectricBrake();brake.turnOffAll();} 

有经验的同学可能就会想,这不就再封装了一层吗??这就是门面模式啦??嗯,没错,这就是门面模式

4. 门面模式的优缺点

优点:

  1. 对客户屏蔽子系统组件,减少了客户处理的对象数目并使得子系统使用起来更加容易。通过引入外观模式,客户代码将变得很简单,与之关联的对象也很少。

  2. 实现了子系统与客户之间的松耦合关系,这使得子系统的组件变化不会影响到调用它的客户类,只需要调整外观类即可。

缺点:

  1. 不能很好地限制客户使用子系统类,如果对客户访问子系统类做太多的限制则减少了可变性和灵活性。
  2. 在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”

参考:https://www.cnblogs.com/Java3y/p/10198715.html

传送门:

项目中用到的责任链模式

给对象讲工厂模式,必须易懂易会

策略模式,工作中你用上了吗?

                                                                     

相关内容

热门资讯

求搞笑一家人全集(国语版)资源 求搞笑一家人全集(国语版)资源亲,有搞笑一家人国语版的吗?麻烦给发一个吧6911****9作品相关介...
家有儿女那集 家有儿女那集有集刘星范了啥事,让他出来,他就把小雨绑架了,小雪还说刘星把小雨绑架了,那集啊?第二部4...
60秒快速入睡法 60秒快速入睡法60秒快速入睡法... 60秒快速入睡法 展开1. 用口呼的一下大呼气;2. 闭...
计谋类小说 最好是玄幻或者异界... 计谋类小说 最好是玄幻或者异界的帝凰!强烈推荐。
电路开关:卧室照明灯可以让进门... 电路开关:卧室照明灯可以让进门开关和床头两个开关都控制吗?这样是三个开关当然可以啊,就是双控电路。
女孩选英语系好么 女孩选英语系好么女孩选英语系挺好的出国方便第二外语是国际化必须的女孩子的一门本事当然也可以根据兴趣学...
斗罗大陆七怪成神的书籍在哪有啊... 斗罗大陆七怪成神的书籍在哪有啊?只有唐三成神的那个部分。。。找小说网有电子版,但是不全(还没完结)
《好想去你的世界爱你》票房破亿... 《好想去你的世界爱你》票房破亿,这部电影的口碑如何?这部电影的口碑特别的高,很多人都从这部电影当中学...
上世纪90代,在F1加拿大大奖... 上世纪90代,在F1加拿大大奖赛丧生的巴西传奇车手是谁?(唯一的信息是他之前曾3夺车手总冠军)当时效...
撒野这本书有多少万字 撒野这本书有多少万字“它有90万字,主要是描写了两个男孩的普通生活,是一部让人放松的小说。”
我想买个盖瑞特2500的进口金... 我想买个盖瑞特2500的进口金属探测器,买过的朋友介绍下,谢谢请问一斤的东西能探多深?
我是宅男,没有事业怎么办? 我是宅男,没有事业怎么办?宅男也可以有事业的。那就努力呗,先找一些简单的工作,从简单的工作开始做起,...
寻找一个有趣的故事 演讲 急用... 寻找一个有趣的故事 演讲 急用!!!最好就像这个故事一样,但是不要经济之类这样话题的。 A君和B...
综艺节目总有杨迪,你怎么看杨迪... 综艺节目总有杨迪,你怎么看杨迪?我觉得杨迪还是一个非常不错的人,而且杨迪也特别搞笑,有他参加的节目也...
反映大学生的生活的小品或者情景... 反映大学生的生活的小品或者情景剧剧本女生之间的,可以搞笑,也可以感人的,时间五分钟左右就可以,是不是...
藏海花2什么时候出书 藏海花2什么时候出书藏海花是南派三叔继《盗墓笔记》之后又一力作,故事从《盗墓笔记》故事结束后的第五个...
儿童绕口令大全100首 儿童绕口令大全100首 1、树上一只鸟,地上一只猫。地上的猫想咬树上的鸟,树上的鸟想啄猫的毛。2、小...
牛顿发现万有引力的故事 牛顿发现万有引力的故事1
有趣的发现教学设计 有趣的发现教学设计有趣的发现教学设计有趣的发现教学设计
请问新概念英语第一册的英语单词... 请问新概念英语第一册的英语单词,是英音,还是美音?急~~~~~!请问describe是读英音还是美音...