《HeadFirst设计模式》第七章-外观模式

本文介绍了如何使用外观模式改善复杂的家庭影院系统。通过创建HomeTheaterFacade类,将多个设备的操作封装成简单接口,如看电影、关电影等,以遵循“最少知识”原则,减少对象间的交互,降低系统复杂度。
摘要由CSDN通过智能技术生成

1.声明

设计模式中的设计思想、图片和部分代码参考自《Head First设计模式》作者Eric Freeman & Elisabeth Freeman & Kathy Siezza & Bert Bates。

在这里我只是对这本书进行学习阅读,并向大家分享一些心得体会。

2.设计家庭影院

在适配器模式中,我们知道如何将一个类的接口转换成另一个符合符合客户期望的接口。Java要做到这一点,必须将一个不兼容目标接口的对象包装起来,变成兼容的对象。

此外还有另外一种模式,它也可以改变接口,但是它改变接口的原因是为了简化接口。这个模式被巧妙地命名为外观模式(Facadce-Pattern),之所以这么称呼,是因为它将一个或数个类的复杂的一切都隐藏在背后,只暴露出一个干净美好的外观。

2.1需求

很多人都爱去电影院看电影,但是如果能够在家就体会到电影院的效果,那就更方便了。现在我们就准备设计一个"家庭电影院"这样的系统。

经过一番精心设计,现在组装了一套豪华的系统,包括Dvd播放机、Cd播放机、立体声、剧院屏幕等。并且我们又花费了好几天的时间进行系统布线、连接所有装置、调试等操作。系统类图如下:

2.2最初的家庭影院系统

类图:

现在我们开始运行系统,开始准备观看喜爱的电影。

播放电影(使用最初的影院系统):

  1. 打开爆米花机
  2. 开始爆米花
  3. 灯光调暗
  4. 放下屏幕
  5. 打开投影机
  6. 投影机的输入接到DVD
  7. 投影机设置为宽屏模式
  8. 打开功放
  9. 将功放的输入设置为DVD
  10. 功放设置为环绕立体声
  11. 调节音量到14
  12. 打开DVD播放器
  13. 开始播放DVD

 将上述步骤转换成代码调用:

可以看到,电影的播放非常的繁琐,而且在观影结束后,还需要将操作再倒序操作一遍。这简直令人崩溃,那么外观模式是如何应对这类问题的。

2.3有外观模式改进的家庭影院

通过观察最初的设计方案,我们发现一个弊端,拿projector(投影仪)举例子,投影仪的打开、防止DVD、设置为宽屏模式这些都需要我们亲力亲为,显得很麻烦,那么我们可不可以将它封装一下,仅仅暴露出一个方法,这个方法将所有关于投影仪的操作都帮我们完成了呢?

这就是外观模式的设计初衷。现在我们可以设计一个新类HomeTheaterFacade,它为我们提供一下几种方法:看电影、关电影、听CD、关CD、听

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琴瘦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值