设计模式之适配器模式

Convert interface of a class into another interface clients expect.Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.

本篇博客属于《Java设计模式》系列之一,内容主要借鉴于 秦小波的著作《设计模式之禅》,在理解过程中可能还参考其他博主的知识,最后整理成自己的学习笔记,在此分享给大家。由于本人知识和能力有限,博客中有错误或者理解偏差的地方,还望同行及前辈们多多探讨和指点,感谢不尽。(目前本人还在实习阶段,个人认为设计模式还是要结合自己的实际经验去理解更佳,暂时更新最常见设计模式9+1篇。立个flag,将来一定会补齐)–2020.11.22

序号内容链接地址
1设计模式六大原则https://blog.csdn.net/Dawn510/article/details/109501957
2单例模式https://blog.csdn.net/Dawn510/article/details/109541109
3工厂模式https://blog.csdn.net/Dawn510/article/details/109588909
4抽象工厂模式及与工厂模式区别https://blog.csdn.net/Dawn510/article/details/109609350
5模板方法模式https://blog.csdn.net/Dawn510/article/details/109609368
6建造者模式https://blog.csdn.net/Dawn510/article/details/109609385
7代理模式https://blog.csdn.net/Dawn510/article/details/109633416
8装饰模式https://blog.csdn.net/Dawn510/article/details/109663917
9适配器模式https://blog.csdn.net/Dawn510/article/details/109962821
10观察者模式https://blog.csdn.net/Dawn510/article/details/109962858

定义

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

适配器模式又叫做变压器模式,通用类图:
在这里插入图片描述

  • Target:目标角色,把其他类转换为何种接口,也就是期望接口
  • Adaptee:源角色,是已经存在的、运行良好的类或对象,经过适配器角色的包装,会成为一个崭新、靓丽的角色
  • Adapter:适配器模式的核心角色,其他两个角色都是已存在的,适配器角色是需要新建立的,职责非常简单:把源角色转换为目标角色,怎么转换?通过继承或者类关联的方式。

目标角色:

public interface Target {
    // 目标角色有自己的方法
    public void request();
}

目标角色实现类:

public class ConcreteTarget implements Target{
    @Override
    public void request() {
        System.out.println("");
    }
}

源角色:

public class Adaptee {
    // 原有的业务逻辑
    public void doSomething(){
        System.out.println("源目标:我有点忙~ leave me alone,pls");
    }
}

适配器角色:

public class Adapter extends Adaptee implements Target{
    @Override
    public void request() {
        super.doSomething();
    }
}

场景类:

public class Client {
    public static void main(String[] args) {
        // 原有的业务逻辑
        Target target =  new ConcreteTarget();
        target.request();
        // 增加了适配器后的业务逻辑
        Target target2 = new Adapter();
        target2.request();
    }
}

适配器模式的优点

优点:

  1. 能够让两个没有任何关系的两个类在一起运行
  2. 增加类的透明性
  3. 提高类的复用度
  4. 灵活性好,适配器想用就用,不用就删,不用修改其它代码

适用场景和注意事项

适配器模式适用于:有动机的修改一个已经投产中的接口时,适用适配器模式。

注意:适配器模式解决处在开发阶段的问题,是正在服役的项目问题。在设计阶段不要考虑它

拓展

上面的例子中适配器分别继承和实现了源类和目标类,当有多个源类时候怎么办?JAVA是不支持多继承的。这时候可以采用类关联的方法!类图如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hz6hL8Hh-1606047426673)(94BF8742DA7241A0AC21632647663A10)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值