设为首页|收藏学知识 |改版意见收集|智能DIY搜索|加入我们|网站地图
当前在线人数:8770
文化共享 好教程 易学习 新资讯
计算软件水平考试

程序员:适配器模式

2007-04-29 源自: 网友评论 共有( )条评论! 内容报错
本文章地址:http://kao.xuezhishi.net/ITtest/level/2007-04-29/23277.html [将本信息与朋友分享!]

                     

  一、适配器(Adapter)模式
  适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。

  名称由来
  这很像变压器(Adapter),变压器把一种电压变换成另一种电压。美国的生活用电电压是110V,而中国的电压是220V。如果要在中国使用美国电器,就必须有一个能把220V电压转换成110V电压的变压器。这个变压器就是一个Adapter。

  Adapter模式也很像货物的包装过程:被包装的货物的真实样子被包装所掩盖和改变,因此有人把这种模式叫做包装(Wrapper)模式。事实上,大家经常写很多这样的Wrapper类,把已有的一些类包装起来,使之有能满足需要的接口。

  适配器模式的两种形式

  适配器模式有类的适配器模式和对象的适配器模式两种。我们将分别讨论这两种Adapter模式。


  二、类的Adapter模式的结构:


  由图中可以看出,Adaptee类没有Request方法,而客户期待这个方法。为了使客户能够使用Adaptee类,提供一个中间环节,即类Adapter类,Adapter类实现了Target接口,并继承自Adaptee,Adapter类的Request方法重新封装了Adaptee的SpecificRequest方法,实现了适配的目的。

  因为Adapter与Adaptee是继承的关系,所以这决定了这个适配器模式是类的。

  该适配器模式所涉及的角色包括:

  目标(Target)角色:这是客户所期待的接口。因为C#不支持多继承,所以Target必须是接口,不可以是类。
  源(Adaptee)角色:需要适配的类。
  适配器(Adapter)角色:把源接口转换成目标接口。这一角色必须是类。


  三、类的Adapter模式示意性实现:

  下面的程序给出了一个类的Adapter模式的示意性的实现:
    //  Class Adapter pattern -- Structural example 
  using System;

    // "ITarget"
  interface ITarget
  {
     // Methods
   void Request();
   }

    // "Adaptee"
  class Adaptee
  {
     // Methods
   public void SpecificRequest()
    {
    Console.WriteLine("Called SpecificRequest()" );
    }
  }

    // "Adapter"
  class Adapter : Adaptee, ITarget
  {
     // Implements ITarget interface
    public void Request()
    {
      // Possibly do some data manipulation
      // and then call SpecificRequest
      this.SpecificRequest();
    }
  }

    /**//// <summary>
    /// Client test
    /// </summary>
  public class Client
  {
   public static void Main(string[] args)
   {
      // Create adapter and place a request
    ITarget t = new Adapter();
    t.Request();
    }
  }

http://kao.xuezhishi.net/ITtest/level/2007-04-29/23277.html
分页:[1] 2 3
评论 点击查看
 


加入QQ群:35714363 一起成长
我要加入更多群 我有意见要反映
考试教室

学知识原创教程下载

本类最近更新
阅读排行

其他相关信息