Java适配器模式示例分析
发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,本篇内容主要讲解"Java适配器模式示例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java适配器模式示例分析"吧!定义适配器模式,即将某个类的接口
千家信息网最后更新 2024年09月30日Java适配器模式示例分析
本篇内容主要讲解"Java适配器模式示例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java适配器模式示例分析"吧!
定义
适配器模式,即将某个类的接口转换成客户端期望的另一个接口的表示,主要目的是实现兼容性,让原本因为接口不匹配,没办法一起工作的两个类,可以协同工作。
分类
类适配器
对象适配器
接口适配器
案例
需求
手机充电,通过手机充电器将220V电压适配为5V
方案一:类适配器
定义220V交流电(被适配者的角色)
/** * 220V交流电(被适配者的角色) * @author:liyajie * @createTime:2022/2/17 21:41 * @version:1.0 */public class Ac { public int outputAc(){ int srcV = 220; System.out.println(srcV + "V交流电"); return srcV; }}
定义5v直流电(目标对象的角色)
/** * 5v直流电(目标对象的角色) * @author:liyajie * @createTime:2022/2/17 21:44 * @version:1.0 */public interface Dc { int outputDc();}
定义适配器
/** * 手机充电适配器 * @author:liyajie * @createTime:2022/2/17 21:45 * @version:1.0 */public class PhoneAdapter extends Ac implements Dc{ @Override public int outputDc() { // 获取220V交流电 int srcV = outputAc(); // 模拟适配器过程,转换为5v直流电 int targetV = srcV / 44; System.out.println("电压已经适配为" + targetV + "V" ); return targetV; }}
定义手机类
/** * 手机类 * @author:liyajie * @createTime:2022/2/17 21:48 * @version:1.0 */public class Phone { public void charge(Dc dc){ if(dc.outputDc() == 5){ System.out.println("电压正常,可以安全充电"); }else { System.out.println("电压异常,危险!"); } }}
定义测试类
/** * 测试类 * @author:liyajie * @createTime:2022/2/18 10:56 * @version:1.0 */public class Test { public static void main(String[] args) { new Phone().charge(new PhoneAdapter()); }}
查看测试结果
方案二:对象适配器
该方案只需要改造手机适配器类即可,如下:
/** * 手机充电适配器 * @author:liyajie * @createTime:2022/2/17 21:45 * @version:1.0 */public class PhoneAdapter implements Dc { private Ac ac; public PhoneAdapter(Ac ac){ this.ac = ac; } @Override public int outputDc() { // 获取220V交流电 int srcV = ac.outputAc(); // 模拟适配器过程,转换为5v直流电 int targetV = srcV / 44; System.out.println("电压已经适配为" + targetV + "V" ); return targetV; }}
改造测试类
/** * 测试类 * @author:liyajie * @createTime:2022/2/18 11:12 * @version:1.0 */public class Test { public static void main(String[] args) { new Phone().charge(new PhoneAdapter(new Ac())); }}
查看测试结果
方案三:接口适配器
需要改造的如下: 定义一个默认的适配器,作用是实现Dc的多个方法,使其他的自定义适配器用来继承,扩展
/** * 默认适配器 * @author:liyajie * @createTime:2022/2/17 21:45 * @version:1.0 */public class DefaultAdapter implements Dc { @Override public int outputDc() { return 0; }}
定义手机适配器
/** * 手机充电适配器 * @author:liyajie * @createTime:2022/2/17 21:45 * @version:1.0 */public class PhoneAdapter extends DefaultAdapter { private Ac ac; public PhoneAdapter(Ac ac){ this.ac = ac; } @Override public int outputDc() { // 获取220V交流电 int srcV = ac.outputAc(); // 模拟适配器过程,转换为5v直流电 int targetV = srcV / 44; System.out.println("电压已经适配为" + targetV + "V" ); return targetV; }}
定义手机类
/** * 手机类 * @author:liyajie * @createTime:2022/2/17 21:48 * @version:1.0 */public class Phone { public void charge(int v){ if(v == 5){ System.out.println("电压正常,可以安全充电"); }else { System.out.println("电压异常,危险!"); } }}
定义测试类
/** * 测试类 * @author:liyajie * @createTime:2022/2/18 11:57 * @version:1.0 */public class Test { public static void main(String[] args) { new Phone().charge(new PhoneAdapter(new Ac()).outputDc()); }}
查看测试结果
对比分析
方案一:类适配器
优势:由于它是继承被适配者,可以根据需求,重写被适配者的方法,灵活性较好
劣势:由于继承是单继承属性的,目标对象必须是一个接口,有一定的局限性
方案二:对象适配器
改造适配类,将继承被适配者,修改为持有被适配者,遵循合成复用原则,使用关联关系代替继承关系,进一步解耦,提高扩展性
方案三:接口适配器
接口适配器模式,又叫缺省适配器模式,通过设计一个中间抽象类,去实现接口,为接口中的每个方法都提供一个默认实现,然后再定义一个具体的适配器继承默认的适配器,只需要重写自己需要重写的方法即可
到此,相信大家对"Java适配器模式示例分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
适配
适配器
手机
接口
测试
电压
方案
模式
交流电
对象
交流
方法
直流电
分析
角色
改造
示例
目标
结果
过程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
童心向党网络安全手抄报
mongodb数据库备份
软件开发有必要注册商标吗
app数据库搭建要多久
北京ai人工智能服务器云主机
本次网络安全周的主题是
大疆安全数据库更新
网络安全问题监管记录表
元神如何选择新服务器
南京同在互联网科技
网络安全法立法+新华社
工控软件开发方案报价
南京安卓软件开发公司哪个好
息县警方开展网络安全宣传
服务器的数据是管理前端的吗
软件开发上什么三本院校
组装服务器需要多长时间
east 数据库
ncbi里有什么数据库
美国租房软件开发
网络安全等级保护测评英文版
江苏服务器应用线束哪家好
网络安全的ppt素材
数据库编写学号
数据库sql语句查找
微擎数据库对比工具教程
服务器远程桌面打不开
win7邮件服务器搭建
服务器装2008蓝屏
实践日记软件开发