学习总结录 学习总结录
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
  • 设计模式

    • 设计模式-工厂模式
    • 设计模式-抽象工厂模式
    • 设计模式-单例模式
    • 设计模式-建造者模式
    • 设计模式-原型模式
    • 设计模式-适配器模式
      • 设计模式-适配器模式
      • 适配器模式结构
      • 适配器模式应用实例
      • 适配器模式优缺点
      • 适配器模式适用环境
      • 参考
    • 设计模式-桥接模式
    • 设计模式-组合模式
    • 设计模式-外观模式
    • 设计模式-装饰模式
    • 设计模式-享元模式
    • 设计模式-代理模式
    • 设计模式-职责链模式
    • 设计模式-命令模式
    • 设计模式-迭代器模式
    • 设计模式-中介者模式
    • 设计模式-观察者模式
    • 设计模式-状态模式
    • 设计模式-策略模式
  • 算法思想

  • 编码规范

  • 技术思想
  • 设计模式
旭日
2023-03-27
目录

设计模式-适配器模式

# 设计模式-适配器模式

我们生活的用电是220V,而当我们使用笔记本或者手机的时候,不可能直接使用220V,这时候我们就需要充电器或变压器来充当电源适配器,通过这个电源适配器,原本不能直接工作的生活用电和笔记本电脑就可以兼容了。

如果系统中存在不兼容的接口,可以通过引入一个适配器来使原本因为接口不兼容而不能一起工作的两个类能够协同工作。

**适配器模式:**将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。

# 适配器模式结构

适配器模式包括类适配器和对象适配器。

在对象适配器中,适配器与适配者之间是关联关系。

在类适配器模式中,适配器与适配者之间是继承关系。

image-20220426161214760

  • Target - 目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。
  • Adapter - 它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。
  • Adaptee - 适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配。

# 适配器模式应用实例

1、创建一个汽车控制类

public abstract class CarController {

    public void move() {
        System.out.println("玩具汽车移动");
    }

    /**
     * 发出声音
     */
    public abstract void phonate();


    /**
     * 灯光闪烁
     */
    public abstract void twinkle();
}

2、创建两个适配者

public class PoliceSound {

    public void alarmSound() {
        System.out.println("发出警笛的声音");
    }
}


public class PoliceLamp {

    public void alarmLamp() {
        System.out.println("警灯闪烁");
    }

}

3、创建适配器

public class PoliceCarAdapter extends CarController{

    private final PoliceSound policeSound;

    private final PoliceLamp policeLamp;

    public PoliceCarAdapter() {
        policeSound = new PoliceSound();

        policeLamp = new PoliceLamp();
    }

    @Override
    public void phonate() {
        policeSound.alarmSound();
    }

    @Override
    public void twinkle() {
        policeLamp.alarmLamp();
    }
}

4、利用适配器适用适配者

public class Main {
    public static void main(String[] args) {
        CarController car = new PoliceCarAdapter();
        car.move();
        car.phonate();
        car.twinkle();
    }
}

# 适配器模式优缺点

优点:

  • 可以让任何两个没有关联的类一起运行。

  • 提高了类的复用。

  • 增加了类的透明度。

  • 灵活性好。

缺点:

  • 过多地使用适配器,会让系统非常零乱,不易整体进行把握。

  • 由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

# 适配器模式适用环境

1、系统需要使用现有的类,而此类的接口不符合系统的需要。

2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。

3、通过接口转换,将一个类插入另一个类系中。

# 参考

设计模式入门实践 (opens new window)

Java设计模式

#设计模式
上次更新: 2024/06/29, 15:13:44
设计模式-原型模式
设计模式-桥接模式

← 设计模式-原型模式 设计模式-桥接模式→

最近更新
01
基础概念
10-31
02
Pytorch
10-30
03
Numpy
10-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 旭日 | 蜀ICP备2021000788号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式