适配器模式:
适配器模式(Adapter),将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单地说,就是所需要的东西就在眼前,但却不能使用,而在短时间内又无法改造它,于是我们就想办法适配它。
适配器模式主要应用于我们希望复用一些现存的类,但是接口与复用环境要求不一致的情况,这在遗留代码复用、类库迁移等方面非常有用。其本质就是:转换匹配,复用功能
GOF设计模式中,对适配器讲了两种类型:类适配器模式和对象适配器模式。
类适配器模式通过多重继承对一个接口与另一个接口进行匹配,这在C++里面是支持的,但是C#,Java等语言都只能有一个父类,不支持多重继承,因此我们把重点放在对象适配器模式。
(类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用。对象适配器采用“对象组合”的方式,更符合松耦合精神。)
适配器模式UML结构图:
基本代码:
class Target
{
public virtual void Request()
{
Console.WriteLine("普通请求");
}
}
class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("特殊请求");
}
}
class Adapter : Target
{
private Adaptee adaptee = new Adaptee();
public override void Request()
{
adaptee.SpecificRequest();
}
}
class Program
{
static void Main(string[] args)
{
Target target = new Adapter();
target.Request();
Console.Read();
}
}