定义
- 将一个类的接口转换为客户希望的另外一个接口。
- Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 简单一点来说,一个接口被另一个接口需要,但是因为其他原因无法直接调用,这时需要适配器进行调整
- 适配器模式分为 类适配器模式 和 对象适配器模式,因为c#等语言不支持类的多重继承,所以没有类适配器模式,只有对象适配器模式
- 适配器模式是代码后期维护时期使用的,或者是为面向多接口调用而开发
使用场景
- 翻译适配器
- 电源适配器
- .NET DataAdapter ,与各种数据库打交道,返回的是统一的dataset
- 后期维护代码时,双方代码不能轻易修改时,考虑适配器。适配器属于亡羊补牢,无奈之举
故事
扁鹊医术之三兄弟,对应不同的开发阶段,病危末期行医阶段
代码实现
//目标
class Target
{
public virtual void Request()
{
Console.WriteLine("普通的请求");
}
}
//需处理适配
class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("特殊需求");
}
}
//适配器
class Adapter: Target
{
private Adaptee adaptee;
public Adapter()
{
adaptee = new Adapter();
}
public override void Request()
{
adaptee.SpecificRequest();
}
}
void Main()
{
Target specialTarget = new Adapter();
specialTarget.Request();
}优缺点
- 可以让两个不关联的类一起运行
- 更好的复用性,更好的扩展性,符合开闭原则
- 缺点是过多使用适配器,会让系统非常零乱,不容易管理
注意
适配器不是在详细设计时添加的,而是解决正在服役的项目的问题