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

适配器模式(Adapter Pattern)

概念:

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

问题:

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

意图:

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

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

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

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

优点:

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

缺点:

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

例:

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

实现类图

在这里插入图片描述

初始角色:

using System;

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

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

适配器角色:

/// <summary>
/// 适配器
/// </summary>
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();
    }
}

输出示例
在这里插入图片描述
设计模式------首页

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值