软件体系结构-适配器模式
软件体系结构-适配器模式
定义
结构型设计模式
适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。
UML类图
三个部分:目标抽象类,适配器类,适配者类
**类适配器:**Java不支持多继承,目标抽象类只能是接口
对象适配器:
缺省适配器模式:
当不需要实现一个接口所提供的所有方法时,可先设计一个抽象类实现该接口,并为接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可以选择性地覆盖父类的某些方法来实现需求,它适用于不想使用一个接口中的所有方法的情况,又称为单接口适配器模式。
实例:
代码
目标类
1 | public abstract class DataProcessor { |
适配器类
1 | public class EnciphterAdapter extends DataProcessor { |
适配者类
1 | public class Encipher { |
客户端类
1 | public class Client { |
优点
- 将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无须修改原有结构
- 增加了类的透明性和复用性,提高了适配者的复用性,同一个适配者类可以在多个不同的系统中复用
- 灵活性和扩展性非常好
- **类适配器模式:**置换一些适配者的方法很方便
- **对象适配器模式:**可以把多个不同的适配者适配到同一个目标,还可以适配一个适配者的子类
缺点
- 类适配器模式:
- 一次最多只能适配一个适配者类,不能同时适配多个适配者;
- 适配者类不能为final;
- 目标抽象类只能为接口,不能为类
- 对象适配器模式:在适配器中置换适配者类的某些方法比较麻烦
适用
系统需要使用一些现有的类,但是这些类的接口不符合系统的需要,甚至无源代码。创建一个可以重复使用的类,用于和一些无太大关联的类联动。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!






