C#学习笔记之适配器模式详解

2019-12-30 18:57:36于丽

什么是适配器模式?

   适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。

   Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

什么时候运用适配器模式?

   在想使用一个已经存在的类时,如果它的接口,也就是它的方法与我们当前的要求不相同时,就需要考虑用到适配器模式了。

   一般而言,使用适配器模式是出于无奈之举,一般存在于软件开发后期或者维护期,在软件设计阶段,我们还是尽量避免该模式的使用。

适配器模式的组成

    Target:目标接口,也就是客户所期待的接口。目标可以是具体的或者抽象的类,也可以是接口。

  Adpatee:需要适配的类。也就是我们需要与目标接口对接成功的类。

  Adapter:中间起到链接作用的类。通过在内部包装一个Adptee对象,将源接口转换成目标接口。

适配器模式具体实现

适配器模式的结构

C#,适配器模式

适配器模式的实现

Target类:也就是目标类


class Target
{
  public virtual void Request()
  {
     Console.WriteLine("普通请求");
   }
}

Adaptee类:需要适配的类


class Adaptee
{
   public void SpecificRequest()
   {
     Console.WriteLine("特殊请求");
   }
}

Adapter类:


class Aapter : Target
{ 
   private Adaptee adaptee = new Adaptee();
   /// <summary>
   /// 这样就可以把表面调用Request()方法变成实际调用SpecificRequest()
   /// </summary>
   public override void Request()
   {
     adaptee.SpecificRequest();
   }
}

主函数调用:


static void Main(string[] args)
{
    //对客户端来说,调用的是Target的Request()
    Target target = new Aapter();
    target.Request();

    Console.Read();
}

实例解析

   为了深化理解,我们准备一个具体的实例来分析。

   姚明作为一个外籍的球员在进入NBA初期,由于英文水平一般,常常听不懂教练的指挥与安排,需要翻译来全程跟随以实现沟通。请就此来写出具体的情况。

 分析:

   在这里,我们不难发现教练的指挥与安排就是Target,姚明就是Adaptee,而翻译就理所当然成了Adapter,那么我们就能分析出彼此的关系了。

C#,适配器模式