设计模式之适配器模式

1.适配器模式概念

用于将一个类的接口转换成客户希望的另一个接口。适配器模式让原本由于接口不兼容而不能一起工作的那些类可以一起工作

2.适配器组成部分

1)目标接口 (Target): 客户端期望使用的接口。

2)适配者类 (Adaptee): 需要适配的已有类,其接口不符合目标接口的要求。

3)适配器类 (Adapter): 将适配者接口转换为目标接口,充当适配者和目标之间的桥梁。

3.举个栗子:

平常我们使用的用电器时,会遇到插头和插板孔不对的情况,我可以选择买一个接头转换器,然后就能正常使用了

如下图:

4.代码实现

1)ThreePort实现类

java 复制代码
package org.xiji.adapter;

/**
 * 接口
 */
public interface ThreePort {
    //输入电源
    String inputPower();

}

2)TwoPort实现类

java 复制代码
package org.xiji.adapter;

/**
 * 两孔插头
 */
public class TwoPort {

    //接通电源
    public void connectPower(String power) {
        System.out.println(power+"    两孔插头接通电源正常工作  ");
    }
}

3)ThreeAdapteTwo实现类

java 复制代码
package org.xiji.adapter;

/**
 * 适配器
 */
public class ThreeAdapterTwo implements ThreePort{
    private TwoPort twoPort;
    @Override
    public String inputPower() {
        return "输出电源";
    }

    /**
     *
     * 接通电源
     */
    public void connectPower(){
        this.twoPort.connectPower(this.inputPower());
    }

    public ThreeAdapterTwo() {
    }

    public TwoPort getTwoPort() {
        return this.twoPort;
    }

    public void setTwoPort(TwoPort twoPort) {
        this.twoPort = twoPort;
    }

    public ThreeAdapterTwo(TwoPort twoPort) {
        this.twoPort = twoPort;
    }
}

4)测试类

java 复制代码
package org.xiji.adapter;

/**
 * 适配器测试类
 */
public class AdapterMain {
    public static void main(String[] args) {
        //创建插头
        System.out.println("创建插头");
        TwoPort twoPort = new TwoPort();
        
        //创建多孔适配器
        System.out.println("创建多孔适配器");
        ThreeAdapterTwo threeAdapterTwo = new ThreeAdapterTwo();

        //两孔插头插入多孔连接器
        System.out.println("两孔插头插入多孔连接器");
        threeAdapterTwo.setTwoPort(twoPort);

        //连接三孔插头电源
        System.out.println("连接三孔插头电源");
        threeAdapterTwo.connectPower();

    }
}

5)测试结果如下

相关推荐
geBR OTTE几秒前
SpringBoot中整合ONLYOFFICE在线编辑
java·spring boot·后端
Porunarufu5 分钟前
博客系统UI自动化测试报告
java
Aurorar0rua1 小时前
CS50 x 2024 Notes C - 05
java·c语言·数据结构
Cosmoshhhyyy2 小时前
《Effective Java》解读第49条:检查参数的有效性
java·开发语言
布谷歌2 小时前
常见的OOM错误 ( OutOfMemoryError全类型详解)
java·开发语言
eLIN TECE2 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
老神在在0012 小时前
Spring Bean 的六种作用域详解
java·后端·spring
仙草不加料3 小时前
互联网大厂Java面试故事实录:三轮场景化技术提问与详细答案解析
java·spring boot·微服务·面试·aigc·电商·内容社区
程序员老邢3 小时前
【技术底稿 19】Redis7 集群密码配置 + 权限锁死 + 磁盘占满连锁故障真实排查全记录
java·服务器·经验分享·redis·程序人生·微服务
落魄江湖行3 小时前
基础篇一 Java 有了 int 为什么还要 Integer?它们到底差在哪?
java·面试·八股文