Java中23种面试常考的设计模式之适配器模式(Adapter)---结构型模式

简介: Java中23种面试常考的设计模式之适配器模式(Adapter)---结构型模式

【Java中23种面试常考的设计模式之适配器模式(Adapter)---结构型模式】

知识回顾:
>

之前我们讲过的设计模式在这里呦:
【面试最常见的设计模式之单例模式】
【面试最常见的设计模式之工厂模式】
【Java中23种面试常考的设计模式之备忘录模式(Memento)---行为型模式】
【Java中23种面试常考的设计模式之观察者模式(Observer)---行为型模式】
【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】
【Java中23种面试常考的设计模式之状态模式(State)---行为型模式】
【Java中23种面试常考的设计模式之策略模式(Strategy)---行为型模式】
【Java中23种面试常考的设计模式之迭代器模式(Iterator)---行为型模式】
【Java中23种面试常考的设计模式之访问者模式(Visitor)---行为型模式】
【Java中23种面试常考的设计模式之中介者模式(Mediator)---行为型模式】
【Java中23种面试常考的设计模式之解释器模式(Interpreter)---行为型模式】
【Java中23种面试常考的设计模式之命令模式(Command)---行为型模式】
【Java中23种面试常考的设计模式之责任链模式(Chain of Responsibility)---行为型模式】
接下来我们要进行学习的是:【Java中23种面试常考的设计模式之适配器模式(Adapter)---结构型模式】。

适配器模式

  1. 适配器模式:将一个类的接口转换成客户希望的另外一个接口。
  2. Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

解决的问题

  1. 主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。

生产开发中常用的使用场景

  1. SpringAOP中适配器模式。
  2. JDK适配器模式。
  3. 等等。。。

模式优点与缺点

优点

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

缺点

  1. 过多地使用适配器,会让系统非常零乱,不容易进行维护。

核心角色

Target类:用户期待的接口,目标可以是具体的或抽象的类,也可以是接口。
Adapter类:通过在内部包装一个Adaptee对象,把源接口转换成目标接口。
Adaptee类:需要适配的类。
Client---Main:客户端测试类。

UML类图

image.png

实现代码

实现方式1:类适配器

Target类

package com.adapter;

public interface Target {
   
   

    void exec();
}

Adapter类

package com.adapter;

public class Adapter extends Adaptee implements Target {
   
   

    @Override
    public void exec() {
   
   
        super.action();
    }
}

Adaptee类

package com.adapter;

public class Adaptee {
   
   

    public void action(){
   
   
        System.out.println("客户端具体想要执行的操作....");
    }
}

客户端测试代码Client-Main

package com.adapter;

public class Main {
   
   
    public static void main(String[] args) {
   
   
        Target t = new Adapter();
        t.exec();
    }
}

运行结果展示:

image.png

实现方式2:对象适配器

package com.adapter;

interface Target {
   
   
    void exec();
}
class Adapter  implements Target {
   
   

    private Adaptee adaptee;

    @Override
    public void exec() {
   
   
        adaptee.action();
    }

    public Adapter(Adaptee adaptee) {
   
   
        super();
        this.adaptee = adaptee;
    }
}

class Adaptee {
   
   

    public void action(){
   
   
        System.out.println("客户端具体想要执行的操作....");
    }
}

public class Main {
   
   
    public static void main(String[] args) {
   
   
        Target t = new Adapter(new Adaptee());
        t.exec();
    }
}

运行结果:
image.png

好了,到这里【Java中23种面试常考的设计模式之适配器模式(Adapter)---结构型模式】就结束了,23种设计模式持续更新汇总中。

相关文章
|
9天前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
26 1
Java面试题之Java集合面试题 50道(带答案)
|
5天前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
18 3
|
9天前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
19 0
Java面试题之cpu占用率100%,进行定位和解决
|
12天前
|
设计模式 缓存 Java
面试题:谈谈Spring用到了哪些设计模式?
面试题:谈谈Spring用到了哪些设计模式?
|
13天前
|
存储 安全 Java
java基础面试题
java基础面试题
19 2
|
13天前
|
缓存 NoSQL Java
Java中redis面试题
Java中redis面试题
25 1
|
14天前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
34 2
|
13天前
|
设计模式 监控 算法
Java设计模式梳理:行为型模式(策略,观察者等)
本文详细介绍了Java设计模式中的行为型模式,包括策略模式、观察者模式、责任链模式、模板方法模式和状态模式。通过具体示例代码,深入浅出地讲解了每种模式的应用场景与实现方式。例如,策略模式通过定义一系列算法让客户端在运行时选择所需算法;观察者模式则让多个观察者对象同时监听某一个主题对象,实现松耦合的消息传递机制。此外,还探讨了这些模式与实际开发中的联系,帮助读者更好地理解和应用设计模式,提升代码质量。
Java设计模式梳理:行为型模式(策略,观察者等)
|
13天前
|
设计模式 Java
Java设计模式
Java设计模式
22 0
|
16天前
|
设计模式 Java
Java设计模式之外观模式
这篇文章详细解释了Java设计模式之外观模式的原理及其应用场景,并通过具体代码示例展示了如何通过外观模式简化子系统的使用。
25 0