七、设计模式之适配器模式【Adapter】


在这里插入图片描述

七、设计模式之适配器模式【Adapter】

又叫:变压器模式
在这里插入图片描述

所属类型定义
结构型将一个类的接口转换为客户希望的另一个接口。是的两个不兼容的接口能够在一起工作

能帮我们干什么?

主要解决什么问题?

主要解决的是 接口兼容问题

在这里插入图片描述
在这里插入图片描述

优缺点

优点
  1. 可以使两个独立的类一起运行
  2. 增加了类的透明性。

    对于高层来说。使用 目标角色是透明的。目标角色通过适配器委托给了源角色。

  3. 提高了类的复用性。

    源角色在不变的基础上,既可以复用到 目标角色的系统中。

  4. 灵活性非常好

    扩展新的源还是不使用适配器都可以灵活的新增和移除。

缺点:

使用的场景

1. 需要对已有系统的功能进行复用,但是接口不兼容的情况。

角色

  1. 适配器源角色: 待适配的。 图例中的 A
  2. 目标角色 : 我们期望使用的目标 : 图例中的 B
  3. 适配器: 将源角色 适配 到 目标角色。图例中的C

参考代码:
https://gitcode.net/k316378085/Java/-/tree/master/java/com/kongxiang/raindrop/dp/type/structure/adapter

实现

类适配器

通过集成源类的方式实现适配器
请添加图片描述

实现难度: ⭐️ ⭐️

/**
 * 类适配器,通过继承源来引入源的功能
 */
 
public class TargetByExtents extends Source{

    /**
     * 实现接口的适配
     * @param a
     * @param b
     * @return
     */
    public int calcuAdd(int a ,int b){
        return add(a,b);
    }
}


对象适配器

通过持有源类的方式实现适配器

请添加图片描述
实现难度: ⭐️ ⭐️

/**
 * 对象适配器,通过 引用类 来引入源的功能
 */

public class TargetByDependency {

    private Source source;

    public TargetByDependency(Source source){
        this.source = source;
    }
    /**
     * 实现接口的适配
     */
    public int calcuAdd(int a ,int b){
         return this.source.add(a,b);
    }
}

总结

适配器模式请不要在开发设计阶段使用。它通常是作为已存在系统不符合我们新的接口定义时,通过适配器进行转换复用。所以我们必须满足 依赖导致和里式替换原则(即:面向高层开发)。不然后后续导致很多适配器的改造。

因而,适配器模式是一个补偿模式,为了解决接口不匹配问题而存在。

多说一句: 在软件架构中。适配器模型多和门面模式(外观模式)配置使用,组成防腐层。用来解藕服务间和模块间依赖问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘉羽很烦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值