C#设计模式:18.适配器模式 u3d学习总结笔记本

本文详细介绍了适配器模式的概念,如何将Target类的接口转换为NewTarget所需的接口,以及其应用场景、优缺点和使用适配器模式创建Adapter类的实例。适配器模式有助于复用现有代码,降低耦合度,但可能导致子类扩展复杂。
摘要由CSDN通过智能技术生成

适配器模式(Adapter Pattern)

 

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

其实这个设计模式的名字,已经把他的功能说明的很清楚了,就是将不同接口的类,运用适配器,使得可以使用同一接口统一调用。

适配器可以是抽象类,并适配器模式的实现是非常灵活的,我们完全可以将Adapter模式中的“现存对象”作为新的接口方法参数,适配器类可以根据参数参数可以返回一个合适的实例给客户端。类的适配器模式是定义一个接口来实现客户端想要的方法,并在适配器类中继承这个接口和源角色。对象的适配器模式是在适配器类中继承要适配的类并声明一个源角色的对象,通过重写调用基类的方法来实现。

使用场景:

  1. 系统需要复用现有类,而该类的接口不符合系统的需求
  2. 想要建立一个可重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
  3. 对于对象适配器模式,在设计里需要改变多个已有子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器,而这不太实际。

优点:

  • 可以在不修改原有代码的基础上来复用现有类,很好地符合 “开闭原则”(这点是两种实现方式都具有的)
  • 采用 “对象组合”的方式,更符合低耦合。

缺点:

  • 使得重定义Adaptee的行为较困难,这就需要生成Adaptee的子类并且使得Adapter引用这个子类而不是引用Adaptee本身。

 

 

原功能类:

//原程序功能类
class Target
{
    public virtual void Request()
    {
        Debug.Log("原功能的请求");
    }
}

新功能类:

//需要适配的新功能类
class NewTarget
{
    public void NewRequest()
    {
        Debug.Log("新功能的请求");
    }
}

适配器类:

//适配器:继承重写调用新类的功能
class Adapter : Target
{
    NewTarget adaptee = new NewTarget();

    public override void Request()//重写方法
    {
        adaptee.NewRequest();
    }
}

 

运行测试:

void Start()
{

    Target target = new Target();//生成原功能类

    target.Request();//调用功能

    target = new Adapter();//生成原功能类的适配器

    target.Request();//调用功能

}

结果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值