《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》子系统改变,外观也可能面临着修改代码,违反”开放封闭“
现在你为了在家看电影,你买了一整套的装备(类),投影仪、3D音响、DVD播放器、爆
米花机,然后你发现,你要看场电影需要这样:
如此多的步骤,使得你每次看电影都必须如此往复的控制这么多家电类,最后你就会放弃
电影啦,如何解决?
使用外观模式吧,我们给家电包装整合到一起,影院遥控器(赋予他们一个统一外观)。
像这样:
上代码:
理解:
这些家电有了一个”外观“,叫电影遥控器,你之需要摁下”watchMovie“来开始你的电影之旅,而不需要,亲自控制每一样家电
上类图:
外观模式的定义:
提供一个统一的接口用来访问子系统中的一群接口;外观模式定义了一个高层接口,让子系
统更加容易使用
设计原则6(拉风外号:迪米特法则):
最少知识原则:只和你的密友谈话
说的是尽量避免一个类会要和很多个类交互的情况,这样的话,一旦面临修改,将不可避免的会影响到很多的类,难于维护,
最典型的是,a调用b的action方法,此时c需要调用b的action方法,却是这样的c.a.b.action;为什么要将a夹在其中呢?
迪米特法则
设计原则6(弊端):
进行极端假设:使用了6使得所有类之间都没了联系交互;那么此时就需要大量的包装者来关联他们,不然这些”散“类使用起来,将会非常麻烦;但大量的包装者却又是麻烦了,所以规则也是要看情况。
外观模式优点:
都在定义里拉
外观模式缺点:
1》限制了对子系统的使用,外观模式能提供的接口”很有限“,不能覆盖到所有子系统类的
接口
2》子系统改变,外观也可能面临着修改代码,违反”开放封闭“
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 六、设计模式——外观模式
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- PHP设计模式之装饰者模式代码实例
- php设计模式之单例模式实例分析
- 介绍php设计模式中的工厂模式
- PHP设计模式之适配器模式代码实例
- 深入浅出23种设计模式
- 浅谈c#设计模式之单一原则
- C#设计模式之观察者模式实例讲解
- C#设计模式之单例模式实例讲解
- 学习JavaScript设计模式(接口)
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- 面向对象设计模式的核心法则
- JavaScript设计模式之单件模式介绍