Java适配器模式应用案例:打造高效、灵活的软件架构

4.1、概念

Java中的适配器模式的核心思想是将一个类的接口转换成另一个类的接口,以便于这两个类能够协同工作。适配器模式通常用于以下情况:

1)当现有的类的接口与系统的需要不一致时,可以使用适配器模式将这些类的接口转换为所需的接口。

2)当需要重用一些现有的类,但其接口并不符合要求时,可以使用适配器模式对其进行包装,从而使其能够符合系统的需要。

3)当需要建立一个可以复用的类,其在与多个类协同工作时具有不同的接口要求时,可以使用适配器模式将这些不同的接口统一起来。

适配器模式的核心思想是封装和转换,通过创建一个适配器类来连接两个不兼容的接口,从而使它们能够无缝地协同工作。在适配器模式中,适配器类充当了两个不兼容接口之间的桥梁,能够将原始接口的方法调用转换为目标接口的方法调用,实现了接口的透明化和解耦合的效果。

4.2、示例代码

Java中的适配器模式通常指的是类适配器模式或对象适配器模式。下面分别介绍这两种模式的原理及示例。

1)类适配器模式

类适配器模式使用继承关系来将适配者类的接口转换成目标接口。具体实现中,适配器类继承适配者类并实现目标接口,从而能够将客户端代码对目标接口的调用转换为对适配者类的调用。

示例代码如下:

// 目标接口
interface Target {
    void request();
}

// 适配者类
class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee.specificRequest()");
    }
}

// 类适配器类
class Adapter extends Adaptee implements Target {
    @Override
    public void request() {
        specificRequest();
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Target target = new Adapter();
        target.request();
    }
}

输出结果为:Adaptee.specificRequest(),说明适配器类成功地将目标接口的调用转换为了对适配者类的调用。

2)对象适配器模式

对象适配器模式使用组合关系来将适配者对象的接口转换成目标接口。具体实现中,适配器类包含一个适配者对象并实现目标接口,从而能够将客户端代码对目标接口的调用转换为对适配者对象的调用。

示例代码如下:

// 目标接口
interface Target {
    void request();
}

// 适配者类
class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee.specificRequest()");
    }
}

// 对象适配器类
class Adapter implements Target {
    private Adaptee adaptee;

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

    @Override
    public void request() {
        adaptee.specificRequest();
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target target = new Adapter(adaptee);
        target.request();
    }
}

输出结果同样为:Adaptee.specificRequest(),说明对象适配器类也成功地将目标接口的调用转换为了对适配者对象的调用。

4.3、实现落地

来自文心一言的作图

适配器模式在Java项目中应用广泛,以下是一个简单的示例,演示如何在项目中使用适配器模式:

适配器模式是一种常用的设计模式,用于将一个类的接口转换成另一个客户端所期望的接口。以下是一个简单的示例,演示如何使用适配器模式实现大陆插头和香港插头的转换:

// 大陆插头接口
interface ChinaPlug {
    void chinaPlug();
}

// 香港插头接口
interface HongKongPlug {
    void hongKongPlug();
}

// 大陆插头实现类
class ChinaPlugImpl implements ChinaPlug {
    public void chinaPlug() {
        System.out.println("大陆插头");
    }
}

// 适配器类
class Adapter implements HongKongPlug {
    private ChinaPlug chinaPlug;

    public Adapter(ChinaPlug chinaPlug) {
        this.chinaPlug = chinaPlug;
    }

    public void hongKongPlug() {
        chinaPlug.chinaPlug(); // 调用大陆插头的方法
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        ChinaPlug chinaPlug = new ChinaPlugImpl();
        HongKongPlug adapter = new Adapter(chinaPlug);

        adapter.hongKongPlug();
    }
}

在上面的示例中,我们定义了两个不同的插头接口:ChinaPlug 和 HongKongPlug。然后,我们创建了一个大陆插头实现类 ChinaPlugImpl,它可以为大陆插头提供具体的功能。

通过创建适配器类 Adapter,我们将大陆插头和香港插头接口进行连接,并使其能够相互通信。适配器类中包含一个大陆插头对象,在适配器的方法中,调用大陆插头的方法来实现转换。

最后,在客户端代码中,我们实例化了一个 ChinaPlugImpl 对象,并将其传递给适配器类 Adapter,从而将大陆插头转换为符合香港插头要求的接口。

=========================================

如果文章对你有帮助,请加个关注、点个赞!!!必回关!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
目录 第1章UML图实训 1.1知识讲解 1.1.1UML概述 1.1.2的UML表示 1.1.3之间的关系 1.2实训实例 1.2.1图实例之图书管理系统 1.2.2图实例之商场会员管理系统 1.3实训练习 第2章面向对象设计原则实训 2.1知识讲解 2.1.1面向对象设计原则概述 2.1.2单一职责原则 2.1.3开闭原则 2.1.4里氏代换原则 2.1.5依赖倒转原则 2.1.6接口隔离原则 2.1.7合成复用原则 2.1.8迪米特法则 2.2实训实例 2.2.1单一职责原则实例分析 2.2.2开闭原则实例分析 2.2.3里氏代换原则实例分析 2.2.4依赖倒转原则实例分析 2.2.5接口隔离原则实例分析 2.2.6合成复用原则实例分析 2.2.7迪米特法则实例分析 2.3实训练习 第3章创建型模式实训 3.1知识讲解 3.1.1设计模式 3.1.2创建型模式概述 3.1.3简单工厂模式 3.1.4工厂方法模式 3.1.5抽象工厂模式 3.1.6建造者模式 3.1.7原型模式 3.1.8单例模式 3.2实训实例 3.2.1简单工厂模式实例之图形工厂 3.2.2工厂方法模式实例之日志记录器 3.2.3抽象工厂模式实例之数据库操作工厂 3.2.4建造者模式实例之游戏人物角色 3.2.5原型模式实例之快速创建工作周报 3.2.6单例模式实例之多文档窗口 3.3实训练习 第4章结构型模式实训 4.1知识讲解 4.1.1结构型模式概述 4.1.2适配器模式 4.1.3桥接模式 4.1.4组合模式 4.1.5装饰模式 4.1.6外观模式 4.1.7享元模式 4.1.8代理模式 4.2实训实例 4.2.1适配器模式实例之算法适配 4.2.2桥接模式实例之跨平台视频播放器 4.2.3组合模式实例之杀毒软件 4.2.4装饰模式实例之界面显示构件库 4.2.5外观模式实例之文件加密 4.2.6享元模式实例之围棋棋子 4.2.7代理模式实例之日志记录代理 4.3实训练习 第5章行为型模式实训 5.1知识讲解 5.1.1行为型模式概述 5.1.2职责链模式 5.1.3命令模式 5.1.4解释器模式 5.1.5迭代器模式 5.1.6中介者模式 5.1.7备忘录模式 5.1.8观察者模式 5.1.9状态模式 5.1.10策略模式 5.1.11模板方法模式 5.1.12访问者模式 5.2实训实例 5.2.1职责链模式实例之在线文档帮助系统 5.2.2命令模式实例之公告板系统 5.2.3解释器模式实例之机器人控制程序 5.2.4迭代器模式实例之商品名称遍历 5.2.5中介者模式实例之温度转换器 5.2.6备忘录模式实例之游戏恢复点设置 5.2.7观察者模式实例之股票变化 5.2.8状态模式实例之银行账户 5.2.9策略模式实例之电影票打折 5.2.10模板方法模式实例之数据库操作 5.2.11访问者模式实例之奖励审批 5.3实训练习 第6章模式联用与综合实例实训 6.1设计模式补充知识 6.1.1反射与配置文件 6.1.2GRASP模式 6.1.3架构模式与MVC 6.2模式联用实训 6.2.1适配器模式与桥接模式联用 6.2.2组合模式与命令模式联用 6.2.3外观模式与单例模式联用 6.2.4原型模式与备忘录模式联用 6.2.5观察者模式与组合模式联用 6.2.6访问者模式、组合模式与迭代器模式联用 6.3综合实例实训 6.3.1多人联机射击游戏 6.3.2数据库同步系统 6.4实训练习 附录A参考答案 A.1第1章实训练习参考答案 A.2第2章实训练习参考答案 A.3第3章实训练习参考答案 A.4第4章实训练习参考答案 A.5第5章实训练习参考答案 A.6第6章实训练习参考答案 参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

栈江湖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值