设计模式(7)----- 适配器模式

适配器模式(Adapter Pattern)

概念:

是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

问题:

两个功能一致的类,但由于接口的不同不能直接复用,加入适配器做接口转换

意图:

将一个类的接口转换成客户希望的另一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作。

Adaptee:初始角色,实现了我们想要使用的功能,但是接口不匹配

Target:目标角色,定义了客户端期望的接口

Adapter:适配器角色,实现了目标接口。实现目标接口的方法是:内部包含一个Adaptee的对象,通过这个对象调用Adaptee的原有方法实现目标接口。(注:这里说的是对象适配器)

优点:

  1. 可以让任何两个没有关联的类一起运行。
  2. 提高了类的复用。
  3. 增加了类的透明度。
  4. 灵活性好。

缺点:

  1. 由于C#不支持多重继承,所以最多只能适配一个适配者类,而且目标类必须是抽象类;
  2. 采用了类和接口的“双继承”实现方式,带来了不良的高耦合。

例:

讲中文的人同讲英文的人对话时需要一个翻译

实现类图

设计模式(7)----- 适配器模式_第1张图片

初始角色:

using System;

public class 外国人
{
     
    virtual public void SayHello()
    {
     
        Console.WriteLine("Hello");
    }
}
using System;

public class 中国人
{
     
    public void SayHello()
    {
     
        Console.WriteLine("你好");
    }
}

适配器角色:

/// 
/// 适配器
/// 
public class 翻译器 : 外国人
{
     
    private 中国人 adaptee = new 中国人();
    override public void SayHello()
    {
     
        adaptee.SayHello();
    }
}

测试:

using System;

class Program
{
     
    static void Main(string[] args)
    {
     
        外国人 x = new 翻译器();
        x.SayHello();
        Console.Read();
    }
}

输出示例
在这里插入图片描述

你可能感兴趣的:(设计模式(Design,pattern),c#,设计模式)