设计模式之适配器模式

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

相关推荐
程序员小白条19 分钟前
你面试时吹过最大的牛是什么?
java·开发语言·数据库·阿里云·面试·职场和发展·毕设
折翅嘀皇虫28 分钟前
fastdds.type_propagation 详解
java·服务器·前端
小年糕是糕手31 分钟前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
豐儀麟阁贵33 分钟前
8.2异常的抛出与捕捉
java·开发语言·python
老华带你飞35 分钟前
社区养老保障|智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序·毕设·社区养老保障
码龄3年 审核中35 分钟前
Linux record 03
java·linux·运维
雨中飘荡的记忆38 分钟前
设计模式之原型模式
设计模式
q***876038 分钟前
springboot下使用druid-spring-boot-starter
java·spring boot·后端
程序员西西39 分钟前
SpringBoot无感刷新Token实战指南
java·开发语言·前端·后端·计算机·程序员
东南门吹雪40 分钟前
Spring的Bean相关
java·spring·bean·aop