设计模式之外观模式
一、外观模式定义
外观模式定义:提供了一个统一的接口,用来访问子系统中的一接口。外观定义了一个高层接口,让子系统更容易使用
外观模式将一个或者数个类的复杂的一切都隐藏在背后,只显露出一个干净美好的外观。通过实现一个提供更合理的接口的外观类,你可以将一个复杂的子系统变的更加容易使用。
外观模式不只是简化了接口,也将客户从组件的子系统中解耦。
外观模式和适配器模式可以包装许多类,但是外观模式的意图是简化接口,而适配器的意图是将接口转换成不同接口
二、外观模式类图
三、 最少知识原则
“最少知识”原则:只和你的密友谈话
这个原则希望我们在设计中,不要让太多的类耦合在一起,免得修改系统中一部分,会影响到其他部分。如果许多类之间相互依赖,那么这个系统就会变成一个易碎的系统,它需要花许多
成本维护,也会因为太复杂而不容易被其他人了解。
该原则提供了一些方针:
(1)该对象本身
(2)被当做方法的参数而传递进来的对象
(3)此方法所创建或实例化的任何对象
(4)对象的任何组件
注意:(1)(2)(3)想告诉我们,如果某对象是调用其他的方法的返回结果,不要调用该对象的方法。
(4)想告诉我们,把组件想象成被实例变量所引用的任何对象,换句话说,把这想象成是“有一个(has-a)”关系
采用最少知识原则的优缺点:
(1)减少了对象之间的依赖,进而会减少软件的维护成本
(2)同时也会导致更多的“包装”类被制造出来,已处理和其他组件的沟通
(3)可能会导致复杂度和开发时间的增加,并降低运行时的性能
四、总结
1) 当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观。
2) 外观将客户从一个复杂的子系统中解耦
3) 实现一个外观,需要将子系统组合进外观,然后将工作委托给子系统进行执行
4) 你可以为一个子系统实现一个以上的外观
5) 外观将一群对象“包装”起来以简化其接口