设计模式总结:适配器模式、外观模式
适配器模式(Adapter Pattern)
定义:
Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interface.
适配器将一个类的接口转换成客户端所期待的另一种接口,让原本因为接口不匹配而无法在一起工作的两个类能在一起工作。
适配器模式把一个接口或类转换成其他的接口或类;也就是一个包装模式Wrapper:将Adaptee包装成一个Target接口的类。
1)Target,目标角色
即客户端所期望的接口。
2)Adaptee,源角色
是已经存在的,运行良好的类,经过适配器角色的包装,转换为Target
3)Adapter,适配器角色
核心角色。通过继承或关联,来进行转换。
如下图。不仅可以适配Adaptee,还可以适配Adaptee的子类。
区别是Adapter继承Adaptee,而非关联。
用于扩展应用中,是一个补救模式,用来解决接口不相容的问题。
项目一定要遵守依赖倒置原则、里氏替换原则,否则适配器也补救不了!
Adapter可以包装一个Adaptee,也可以同时包装多个Adaptee!此时要注意与“外观模式”的区别:
适配器模式的意图,是改变接口以符合client的期望。外观模式的意图,是提供复杂子系统的一个简化接口,让接口更简单。装饰者模式的意图,是不改变接口,但加入新的行为和责任。
外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
用法:1)通过组合,让外观能够访问子系统中所有组件;
2)将组件整合成一个统一的接口
public class Facade{ ComonentA a; ComonentB b; .... public void watchMovie(){ a.on(); b.start(); ... } public void endMovie(){ ... b.stop(); a.off(); }}