(一)定义:将一个接口转换成为客户想要的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。
1.1 UML类图
1.2 类与对象之间关系
Target:目录抽象类,定义客户要用的特定领域的接口
Adapter:适配器(公共接口),调用另一个接口,作为一个转换器
Adaptee:适配器(母接口),定义一个接口,Adapter需要接入。
Client:客户调用类。
1.3 典型调用顺序图
适配器定义-源码public class Target { public virtual string Request() { Console.WriteLine("普通请求!!"); return "Target普通请求!"; } } public class Adaptee { public string SpecificRequest() { Console.WriteLine("Adaptee特殊请求!"); return "Adaptee特殊请求!"; } } public class Adapter : Target { private Adaptee adaptee = new Adaptee(); public override string Request() { return adaptee.SpecificRequest(); } } public class Client { public string Run() { Target target = new Adapter(); return target.Request(); } }
(二) 适配器模式适用性
要想使用一个已存在的类,但如果它的接口,也就是它的方法和要求的不相同时,两个类所做的事情相同或相似,但是具有不同的接口时要使用它。就应该考虑用适配器模式。客户代码可以统一调用同一接口。
在.NET中有一个类库DataAdapter就是适配器模式的应用。DataAdapter用作DataSet和数据源之间的适配器以便检索和保存数据,DataAdapter通过映射Fill和Update来提供这一适配器。由于数据源可能来自SQL Server,可能来自Oracle,也可能来自Access,这些数据在组织上可能有不同之处,但我们希望得到统一的DataSet(实质是XML数据)。此时可以用DataAdapter就是非常好的方式。
时间: 2024-10-24 17:35:33