设计模式——适配器模式
2021/9/30 23:10:54
本文主要是介绍设计模式——适配器模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
适配器模式本质是为了解决 对接另外一个接口时,发现两边的数据格式或者一些原因导致不能直接对接;这是很正常的现象;当为了实现低耦合即尽量不要修改大量代码去适配对接接口,就应该抽象出一层适配层,即适配类来完成两边的对接工作。
适配器模式分为两种
- 类适配方式,即通过继承来完成
- 对象适配方式,即通过代理来完成
都通过 220V电源 向 5V电源 适配的案例来举例
第一种方式--类适配:
220V 电源类
// 220V 电源类 public class Volate220V { //输出220v的电压 public int output220V(){ int src = 220; System.out.println("电压="+src + "伏"); return src; } }
定义一个输出5V的接口
//适配接口 public interface IVoltage5V { public int output5V(); }
适配类
//适配器类 public class VoltageAdapter extends Volate220V implements IVoltage5V { @Override public int output5V() { //获得到220v电压 int srcV = output220V(); int dstV = srcV / 44;//转换成5V return dstV; } }
使用
public class Client { public static void main(String[] args){ VoltageAdapter voltageAdapter = new VoltageAdapter(); voltageAdapter.output5V(); } }
第二种方式:对象适配
定义一个适配接口,适配5V电源
//适配接口 public interface IVoltage5V { public int output5V(); }
220V电源类
//被适配的类 public class Volate220V { //输出220v的电压 public int output220V(){ int src = 220; System.out.println("电压="+src + "伏"); return src; } }
适配器类
//适配器类 public class VoltageAdapter implements IVoltage5V { private Volate220V volate220V;//关联关系-聚合 //通过构造器,传入一个Volate220V实例 public VoltageAdapter(Volate220V volate220V) { this.volate220V = volate220V; } @Override public int output5V() { //获得到220v电压 int dst = 0; if (volate220V != null){ int srcV = volate220V.output220V();//获取220v电压 System.out.println("使用对象适配器,进行适配~"); dst = srcV / 44;//转换成5V System.out.println("适配完成,输出的电压为="+dst); } return dst; } }
使用
public class Client { public static void main(String[] args){ VoltageAdapter voltageAdapter = new VoltageAdapter(new Volate220V()); voltageAdapter.output5V(); } }
我比较常用第二种,因为聚合优于继承
这篇关于设计模式——适配器模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现