设计模式之适配器模式

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)测试结果如下

相关推荐
莫得感情 o6 分钟前
设计模式 08 · 装饰器模式
设计模式·装饰器模式
snow@li7 分钟前
SpringBoot:Payload统一响应包装/全景深入梳理
java·spring boot·后端
中国搜索直付通9 分钟前
游戏车机端支付通道,会是下一个被低估的合规战场吗?
java·大数据·开发语言·人工智能·游戏
AKA__Zas18 分钟前
芝士算法(位运算)
java·开发语言·算法·leetcode·学习方法
她说可以呀20 分钟前
Spring-ai 2.0 MCP
java·人工智能·spring
weixin_440784119 小时前
【HandlerThread实现原理】
android·java·开发语言
leoZ2319 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
mubei-12311 小时前
SpringDAO的用法
java·开发语言·数据库
happymagic11 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
都叫我大帅哥13 小时前
给 Java 程序员的 CSRF 攻击详解:从原理到防御实战
java