设计模式-类适配器模式

简介: 设计模式-类适配器模式


我们之前已经说过对象适配器模式,有兴趣的读者可以阅读 对象适配器模式

定义

适配器模式就是把一个类的接口转换成客户端所期待的另外一种接口,从而使原接口不匹配而无法一起工作的两个类能在一起工作。从功能上说,不兼容的接口都拥有相似或者相同的功能,但是对于客户端期望的接口不兼容,通常我们通过修改该类的接口来解决接口不兼容的问题,但是我们不愿意为了一个功能修改哥哥依赖接口,或者我们压根就没有对象类的源代码,适配器就派上用场了。

适配器优点

  • 使目标类和被适配类解耦。
  • 增加了类的透明性和复用性,将具体的实现封装在适配器中,对于客户端来说是透明的。
  • 灵活性、拓展性比较好,符合开闭原则。

角色

  • 目标接口(Target):定义一个客户端使用的指定接口。
  • 客户端(Client):使用目标接口,完成功能。
  • 被适配者(Adaptee):一个现存需要适配成目标接口的类。
  • 适配器(Adapter):负责将被适配者接口转换为 Target 接口。这是该模式的核心。

场景重现

假设现在有一个人只会说英语,但是目标类接口要求可以说英语、法语、汉语。这时候 英语就是被适配者,我们的同声翻译就是适配器,用于适配英语同声传译到目标接口所期望的语言。

代码实现

被适配者,只会英语

/**
 * 被适配器
 */
public class EnglishSpeaker {
    public void speakEnglish() {
        System.out.println("I can speak english.");
    }
}

目标接口,需要会说 英语、法语、汉语。

/**
 * 目标接口类:英语、法语、汉语
 */
public interface SpeakTarget {
    void speakEnglish();
    void speakChinese();
    void speakFrench();
}

定义我们的同声翻译,将英语同声翻译为目标接口期望的功能。我们继承被适配者,同时实现 目标接口。

/**
 * 同声翻译适配器
 */
public class SpeakAdapter extends EnglishSpeaker implements SpeakTarget {
    public SpeakAdapter() {
    }
    @Override
    public void speakChinese() {
        System.out.println("通过适配器,将英语转化为中文:我可以说中文");
    }
    @Override
    public void speakFrench() {
        System.out.println("通过适配器,将英语转化为法语:我可以说法语了");
    }
    @Override
    public void speakEnglish() {
        super.speakEnglish();
    }
}

Client

/**
 * 客户端
 */
public class Client {
    public static void main(String[] args) {
        SpeakTarget speakTarget = new SpeakAdapter();
        speakTarget.speakChinese();
        speakTarget.speakEnglish();
        speakTarget.speakFrench();
    }
}

打印

通过适配器,将英语转化为中文:我可以说中文
I can speak english.
通过适配器,将英语转化为法语:我可以说法语了


相关文章
|
10天前
|
设计模式 JSON 前端开发
前端必须掌握的设计模式——适配器模式
适配器模式是一种结构型设计模式,用于使接口不兼容的对象能够相互合作。通过在客户端和系统之间引入一个“中间层”适配器,将不同类型的输入数据转换为系统能处理的标准格式,减轻系统的负担,提高扩展性和可维护性。例如,MacBook的扩展坞将多种接口(如HDMI、USB)转换为Type-C接口,实现多接口兼容。
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
3月前
|
设计模式 Java 程序员
Java设计模式-适配器模式(8)
Java设计模式-适配器模式(8)
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
57 2
|
7月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Adapter(适配器模式)
【设计模式】JAVA Design Patterns——Adapter(适配器模式)
|
2月前
|
设计模式 Java
Java设计模式之适配器模式
这篇文章详细讲解了Java设计模式中的适配器模式,包括其应用场景、实现方式及代码示例。
58 0
|
3月前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
4月前
|
设计模式 XML 存储
【六】设计模式~~~结构型模式~~~适配器模式(Java)
文章详细介绍了适配器模式(Adapter Pattern),这是一种结构型设计模式,用于将一个类的接口转换成客户期望的另一个接口,使原本不兼容的接口能够一起工作,提高了类的复用性和系统的灵活性。通过对象适配器和类适配器两种实现方式,展示了适配器模式的代码应用,并讨论了其优点、缺点以及适用场景。
|
5月前
|
设计模式 Go
Go语言设计模式:使用Option模式简化类的初始化
在Go语言中,面对构造函数参数过多导致的复杂性问题,可以采用Option模式。Option模式通过函数选项提供灵活的配置,增强了构造函数的可读性和可扩展性。以`Foo`为例,通过定义如`WithName`、`WithAge`、`WithDB`等设置器函数,调用者可以选择性地传递所需参数,避免了记忆参数顺序和类型。这种模式提升了代码的维护性和灵活性,特别是在处理多配置场景时。
77 8
|
4月前
|
设计模式 存储 安全
18 Java反射reflect(类加载+获取类对象+通用操作+设计模式+枚举+注解)
18 Java反射reflect(类加载+获取类对象+通用操作+设计模式+枚举+注解)
119 0

热门文章

最新文章