设计模式学习笔记适配器模式

概述:                                                                                                     

适配器模式(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中 数据相匹配)来提供这一适配器。

原文地址:https://www.cnblogs.com/jqbird/p/2155534.html