《Head.First设计模式》的学习笔记(9)--外观模式

意图:为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

结构:

image

例子:

假设你有一套杀手级的家庭影院系统,内含DVD播放器、投影仪、自动屏幕、环绕立体声等。那么当你想看一部DVD时,需要做哪些事情呢(用最土的方式)?

1、将灯光调暗;

2、放下屏幕;

3、打开投影仪;

4、将投影仪的输入切换到DVD;

5、将投影仪设置成宽屏模式;

6、打开功放;

7、将功放的输入设置为DVD;

8、将功放设置为环绕立体声;

9、将功放音量调到中;

10、打开DVD播放器;

11、开始播放DVD。

我想如果每次看DVD时都要进行这样一番折腾,那我宁愿不看了。上面的操作暴露了哪些问题呢?

1、操作麻烦。具体体现在打开DVD、关闭DVD、改听CD或者广播。

2、升级麻烦(就是耦合度太大)。如果我要升级系统,那么我还必须重新学习另一套操作流程。

那么这些问题如何解决呢?

使用外观模式,新建一个门户类(或管理类),暴露出一些方法,在这些方法里对这些子系统进行调用(这里的子系统具体指灯光、屏幕、投影仪、功放、DVD等)。具体代码很简单,略。

外观模式的优点

1、对接口进行了简化,方便客户使用。

2、可以实现客户与子系统解耦,易于维护。

缺点:

1、多了一个包装类,可能导致复杂度和开发时间的增加,并降低运行时的性能。

值得注意的地方:

1、外观模式对接口进行了简化,但这并不意味着对子系统进行彻底封装。如果有必要,这些子系统的接口还可以继续暴露给客户,这就是所谓的高级功能(或称为自定义)。

2、外观模式不能新增功能,但他可以将某些功能按次序执行。例如先打开DVD,后播放DVD。

3、子系统与外观不是一对一关系,是多对多关系。一个子系统可以拥有多个外观,一个外观可以调用多个子系统。

4、外观模式与适配器模式的区别不是包装的类的多少,而是意图不一样。适配器模式也可以包装很多类,但他的意图是改变接口,符合客户的期望;外观模式是将接口进行简化,方便使用。

转载于:https://www.cnblogs.com/wxj1020/archive/2008/05/16/1200714.html

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值