将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原来由于接口不兼容而不能一起工作的类可以一起工作。
结构型模式
类适配器模式通过多重继承对接口进行匹配,而C#、VB.NET、JAVA等语言不支持多重继承,一个类只允许有一个父类。所以我们主要介绍的是对象适配器模式。
//Target类
class Target
{
public virtual void Request()
{
Console.WriteLine("普通请求!");
}
}
//Adaptee类
class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("特殊请求!");
}
}
//Adapter类
class Adapter : Target
{
private Adaptee adaptee = new Adaptee(); //建立一个私有的Adaptee对象
public override void Request()
{
adaptee.SpecificRequest();
}
}
//客户端代码
Target target = new Adapter(); //实例化对象
target.Request();
Console.Read();
两个类所做的事情相同或相似,希望复用这些现存的类,但是具有不同的接口与复用环境要求不一致,并且双方都不太容易修改的时候,此时应该考虑使用适配器模式。
适配器模式可以使客户代码统一调用同一接口,更加简单、直接和紧凑。
适配器模式是在软件开发后期或维护期再考虑使用的模式。
1、在软件设计阶段,事先预防接口不同的问题,就不会发生不匹配问题;
2、如果有接口不统一问题发生时,首先应该考虑及时重构统一接口;
3、只有碰到无法改变原有设计和代码的情况时,才考虑适配。