一站式服务建站,深圳网站建设首选全通网络,微信公众平台官方,app网站开发招聘一、适配器模式
1.1、概述 适配器模式#xff08;Adapter Pattern#xff09;用于兼容不相关的接口之间#xff0c;类似于一个桥梁#xff0c;它结合了两个独立接口的功能#xff0c;这种类型的设计属于结构型模式#xff0c;为了方便大家伙的理解#xff0c;我举个例子…一、适配器模式
1.1、概述 适配器模式Adapter Pattern用于兼容不相关的接口之间类似于一个桥梁它结合了两个独立接口的功能这种类型的设计属于结构型模式为了方便大家伙的理解我举个例子例如国产的电源适配器标准输出电压是220v美国人购买该电源适配器后显然无法直接使用美国标准输出电压110vPS不怕把电脑充冒烟可以直接使用那么这个时候可以使用一个适配器将国产充电器的电压转换为美国标准电压后再进行使用这是生活中最常见的一个场景 类似的场景还有很多欢迎大家点赞留言举例作为23种设计模式之一的适配器模式Adapter Pattern在Java中有着广泛的应用例如基于IO流的BufferedInputStream、BufferedOutputStream基于SpringMVC的各种HandlerAdapter处理器适配器那么工作中我们应该怎么使用适配器模式助力开发呢下面进入实战演示环节 1.2、组成要素 Target客户期望获得的功能例如美国人需要110v的电压Client客户。通过访问Target接口来获取期望的功能110v电压Adaptee现有接口例如当前国产电源适配器的标准输出电压为220v需要被适配Adapter适配器类适配现有接口使其符合客户需求 结构图如下 1.3、思想 适配器提供和现有接口相同的功能即输出电压但是在输出电压时将现有接口注入然后在适配器实现中对现有接口的功能进行处理得到预期结果 1.4、案例代码
1.4.1、项目概览 1.4.2、pom 同 系列二十四、Spring设计模式之策略模式 # pom 1.4.3、ChinaChargerAdaptee
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 9:46* Description: 中国充电器标准输出电压220v*/
public interface ChinaChargerAdaptee {/*** 输出电压* return*/String outputVoltage();}
1.4.4、ChinaChargerAdapteeImpl
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 9:47* Description:*/
Component
public class ChinaChargerAdapteeImpl implements ChinaChargerAdaptee {Overridepublic String outputVoltage() {return 220;}
}1.4.5、ChargerAdapter
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 9:52* Description: 电源适配器*/
public interface ChargerAdapter {/*** 输出电压* return*/String outputVoltage();}
1.4.6、AmericanChargerAdapter
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 9:51* Description:*/
Component(value American)
public class AmericanChargerAdapter implements ChargerAdapter {Resourceprivate ChinaChargerAdaptee chinaChargerAdaptee;Overridepublic String outputVoltage() {System.out.println(购买一个电源充电器原始标准输出电压 chinaChargerAdaptee.outputVoltage());// 模拟电压转换String adapterVoltage String.valueOf(Integer.valueOf(chinaChargerAdaptee.outputVoltage()) - 110);System.out.println(电压适配美国标准电压后的输出电压 adapterVoltage);return 【美国】输出标准电压 adapterVoltage;}
}
1.4.7、IndiaChargerAdapter
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 9:51* Description:*/
Component(value India)
public class IndiaChargerAdapter implements ChargerAdapter {Resourceprivate ChinaChargerAdaptee chinaChargerAdaptee;Overridepublic String outputVoltage() {System.out.println(购买一个【中国制造】的电源充电器原始标准输出电压 chinaChargerAdaptee.outputVoltage());// 模拟电压转换String adapterVoltage String.valueOf(Integer.valueOf(chinaChargerAdaptee.outputVoltage()) 10);System.out.println(电压适配印度标准电压后的输出电压 adapterVoltage);return 【印度】输出标准电压 adapterVoltage;}
}
1.4.8、JapanChargerAdapter
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 9:51* Description:*/
Component(value Japan)
public class JapanChargerAdapter implements ChargerAdapter {Resourceprivate ChinaChargerAdaptee chinaChargerAdaptee;Overridepublic String outputVoltage() {System.out.println(购买一个【中国制造】的电源充电器原始标准输出电压 chinaChargerAdaptee.outputVoltage());// 模拟电压转换String adapterVoltage String.valueOf(Integer.valueOf(chinaChargerAdaptee.outputVoltage()) - 120);System.out.println(电压适配日本标准电压后的输出电压 adapterVoltage);return 【日本】输出标准电压 adapterVoltage;}
}
1.4.9、NationParam
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 10:35* Description:*/
Data
AllArgsConstructor
NoArgsConstructor
Accessors(chain true)
ToString(callSuper true)
public class NationParam implements Serializable {private String nationType;}
1.4.10、AdapterService
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 10:21* Description:*/
public interface AdapterService {/*** 输出电压* param param* return*/String outputVoltage(NationParam param);}
1.4.11、AdapterServiceImpl
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 10:21* Description:*/
Service
public class AdapterServiceImpl implements AdapterService {Overridepublic String outputVoltage(NationParam param) {ChargerAdapter chargerAdapter SpringUtil.getBean(param.getNationType(), ChargerAdapter.class);return chargerAdapter.outputVoltage();}
}
1.4.12、AdapterController
/*** Author : 一叶浮萍归大海* Date: 2023/11/30 10:18* Description:*/
RestController
public class AdapterController {Resourceprivate AdapterService adapterService;PostMapping(/outputVoltage)public String outputVoltage(RequestBody NationParam param) {return adapterService.outputVoltage(param);}}
1.4.13、测试