您的位置:首页 > 其它

《8》外观模式

2016-02-04 11:10 218 查看
问题:
现在你为了在家看电影,你买了一整套的装备(类),投影仪、3D音响、DVD播放器、爆
米花机,然后你发现,你要看场电影需要这样:



如此多的步骤,使得你每次看电影都必须如此往复的控制这么多家电类,最后你就会放弃
电影啦,如何解决?

使用外观模式吧,我们给家电包装整合到一起,影院遥控器(赋予他们一个统一外观)。

像这样:



上代码:



理解:
这些家电有了一个”外观“,叫电影遥控器,你之需要摁下”watchMovie“来开始你的电影之旅,而不需要,亲自控制每一样家电

上类图:



外观模式的定义:
提供一个统一的接口用来访问子系统中的一群接口;外观模式定义了一个高层接口,让子系
统更加容易使用

设计原则6(拉风外号:迪米特法则):
最少知识原则:只和你的密友谈话

说的是尽量避免一个类会要和很多个类交互的情况,这样的话,一旦面临修改,将不可避免的会影响到很多的类,难于维护,
最典型的是,a调用b的action方法,此时c需要调用b的action方法,却是这样的c.a.b.action;为什么要将a夹在其中呢?

迪米特法则
设计原则6(弊端):
进行极端假设:使用了6使得所有类之间都没了联系交互;那么此时就需要大量的包装者来关联他们,不然这些”散“类使用起来,将会非常麻烦;但大量的包装者却又是麻烦了,所以规则也是要看情况。

外观模式优点:
都在定义里拉

外观模式缺点:
1》限制了对子系统的使用,外观模式能提供的接口”很有限“,不能覆盖到所有子系统类的
接口
2》子系统改变,外观也可能面临着修改代码,违反”开放封闭“
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息