七、设计模式之适配器模式【Adapter】
又叫:变压器模式
所属类型 | 定义 |
---|---|
结构型 | 将一个类的接口转换为客户希望的另一个接口。是的两个不兼容的接口能够在一起工作 |
能帮我们干什么?
主要解决什么问题?
主要解决的是 接口兼容问题
优缺点
优点
- 可以使两个独立的类一起运行
- 增加了类的透明性。
对于高层来说。使用 目标角色是透明的。目标角色通过适配器委托给了源角色。
- 提高了类的复用性。
源角色在不变的基础上,既可以复用到 目标角色的系统中。
- 灵活性非常好
扩展新的源还是不使用适配器都可以灵活的新增和移除。
缺点:
使用的场景
1. 需要对已有系统的功能进行复用,但是接口不兼容的情况。
角色
- 适配器源角色: 待适配的。 图例中的 A
- 目标角色 : 我们期望使用的目标 : 图例中的 B
- 适配器: 将源角色 适配 到 目标角色。图例中的C
实现
类适配器
通过集成源类的方式实现适配器
实现难度: ⭐️ ⭐️
/**
* 类适配器,通过继承源来引入源的功能
*/
public class TargetByExtents extends Source{
/**
* 实现接口的适配
* @param a
* @param b
* @return
*/
public int calcuAdd(int a ,int b){
return add(a,b);
}
}
对象适配器
通过持有源类的方式实现适配器
实现难度: ⭐️ ⭐️
/**
* 对象适配器,通过 引用类 来引入源的功能
*/
public class TargetByDependency {
private Source source;
public TargetByDependency(Source source){
this.source = source;
}
/**
* 实现接口的适配
*/
public int calcuAdd(int a ,int b){
return this.source.add(a,b);
}
}
总结
适配器模式请不要在开发设计阶段使用。它通常是作为已存在系统不符合我们新的接口定义时,通过适配器进行转换复用。所以我们必须满足 依赖导致和里式替换原则(即:面向高层开发)。不然后后续导致很多适配器的改造。
因而,适配器模式是一个补偿模式,为了解决接口不匹配问题而存在。
多说一句: 在软件架构中。适配器模型多和门面模式(外观模式)配置使用,组成防腐层。用来解藕服务间和模块间依赖问题。