简介
- 适配器模式:将一个类的接口转换成客户所希望的另一个接口
- 适配器模式使原本接口不兼容导致不能调用的那些类或接口,可以适配一起工作
原理
兼容原来无法使用的接口,相当于一个接口转换器
作用
优点
- 可以让任何两个没有关联的类一起运行
- 提高了类的复用
- 增加了类的透明度
- 灵活性好
缺点
- 过多地使用适配器,会让系统非常零乱,不易整体进行把握
- 对于单继承的编程语言,至多只能适配一个适配者类,而且目标类必须是抽象类
使用场景
- 系统要使用的类,无法兼容时
- 想要将一个类应用于某个类的体系中时
- 没有一致性的接口,但又希望能重复使用的类
实现
UML 图
-
采用继承原有接口类的方式
-
采用组合原有接口类的方式
代码
- 使用第二种实现方式
class Program
{
static void Main() {
Adaptee adaptee = new Adaptee();
Target target = new Adapter(adaptee);
target.Request();
}
//需要被适配的类
public class Target {
public virtual void Request() {}
}
//与被适配对象提供不兼容接口的类
public class Adaptee {
public void SpecialRequest() {
Console.WriteLine("SpecialRequest of Adaptee");
}
}
//进行适配的类,采用聚合原有接口类的方式
public class Adapter : Target {
private Adaptee m_adaptee = new Adaptee();
public Adapter(Adaptee adaptee) {
m_adaptee = adaptee;
}
public override void Request() {
Console.WriteLine("Request of Adapter");
m_adaptee.SpecialRequest();
}
}
}
输出:
Request of Adapter
SpecialRequest of Adaptee