适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
分析:
这可以让客户从实现的接口解耦。如果一段时间之后,我们想改变接口,适配器可以将改变的部分封装起来,客户不必为了应对不同的接口而每次跟着修改。
这个适配器模式充满着良好的OO设计原则:使用对象组合,以修改的接口包装被适配者:这种做法还有额外的优点,那就是被适配者的任何子类,都可以搭配着适配器使用。
此模式将客户与接口绑定起来,而不是和实现绑定起来的。或者也可以加上新的实现,只要它们遵守目标接口就可以。
对象适配器
类图:
类适配器
这种适配器需要多重继承才能实现
和对象适配器唯一的区别就是 适配器继承了 Target 和 Adaptee 。而对象适配器是使用组合的方式将请求传送给被适配者。
类图:
外观模式 提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易被使用。
请务必记住,外观模式的意图 —— 提供一个简单的接口,好让一个子系统更容易使用。
类图:
要点:
1、当需要使用一个现有的类,而接口并不符合你的需要时,就使用适配器。
2、当需要简化并统一一个很大接口或者一群复杂的接口时,使用外观模式。
3、适配器改变接口以符合客户的期望。
4、外观将客户从一个复杂的子系统中解耦。
5、实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小与复杂度而定。
6、实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行。
7、适配器有两种形式,对象适配器和类适配器,类适配器需要用到多重继承。
8、你可以为一个子系统实现一个以上的外观。
9、适配器将一个对象包装起来以改变其接口:装饰者将一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装”起来以简化其接口。