设计模式学习笔记-适配器模式
概述:
适配器模式(atapter)将一个类的接口转换成用户希望的另一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
应用场合:
1.你想使用一个已经存在的类,而它的接口不符合你的要求。
2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
3.(仅适用于对象adapter),你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配它的父类接口
类图:
代码结构:
1.目标接口
/// <summary>
/// 客户期待的目标接口
/// </summary>
class Target
{
public virtual void Request()
{
Console.WriteLine("普通请求");
}
}
2.需要适配的类
/// <summary>
/// 需要适配的类
/// </summary>
class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("特殊请求");
}
}
3.构造适配器
/// <summary>
/// 通过在内部包装一个Adapter对象,把源接口转换成目标接口
/// </summary>
class Adapter:Target
{
/// <summary>
/// 建立一个私有的Adapter对象
/// </summary>
private Adaptee adaptee = new Adaptee();
public override void Request()
{
//这样就可以把表面上调用Request()方法变成实际调用SpecificRequest()
adaptee.SpecificRequest();
}
}
4.调用示例
/// <summary>
/// 测试适配器模式
/// </summary>
static void TestAdapter()
{
Target target = new Adapter();
target.Request();
Console.Read();
}
小结:
适配器模式是在重构无门的情况下出此下策,解决实际的问题最重要,.net类库里的DataAdapter对象就是用作DataSet和数据源之间的适配器以便检索和保存数据,DataAdapter通过映射Fill(这更改了DataSet中的数据以便于数据源中的数据相匹配)和Update(这更改了数据源中的数据以便于DataSet中 数据相匹配)来提供这一适配器。