zoukankan      html  css  js  c++  java
  • 设计模式学习笔记适配器模式

    概述:                                                                                                     

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

  • 相关阅读:
    windows下搭建基于eclipse插件的GoLang开发环境
    vtk类之vtkImageReslice:基本算法,对体数据沿着轴进行切片
    vtk类之vtkTextureMapToSphere:纹理映射算法, 映射球体纹理
    wxpython 之 GDI 画刷Brush(三)
    c# 获取Rss数据
    C# 基础知识系列之面向对象基础
    SilverLight 得到文件绝对路径
    SilverLight C# 读取并修改App.config文件
    Silverlight 脱离浏览器
    C# 中New关键字的用法
  • 原文地址:https://www.cnblogs.com/jqbird/p/2155534.html
Copyright © 2011-2022 走看看