时间:2021-05-20
本文实例讲述了Java适配器模式应用之电源适配器功能。分享给大家供大家参考,具体如下:
一、模式定义
存在两种适配器模式
1 对象适配器模式,在这种适配器模式中,适配器容纳一个它包裹的类对象的物理实体。
2 类适配器模式,在这种适配器模式中,适配器继承自已实现的类。
二、模式举例
1 模式分析
我们借用笔计本电源适配器来说明这一模式。
已经存在的交流电源
笔记本电脑
电源适配器
2 适配器模式的静态建模
3 代码举例
3.1 抽象电源建立
package com.demo.power;/** * 电源基类 * * @author * */public abstract class AbsBasePower{ // 电压值 private float power; // 单位 private String unit = "V"; // 构造方法 public AbsBasePower(float power) { this.power = power; } public float getPower() { return power; } public void setPower(float power) { this.power = power; } public String getUnit() { return unit; } public void setUnit(String unit) { this.unit = unit; }}3.2 220v电源接口
package com.demo.power.v220;/** * 220V 电源接口 * * @author * */public interface IPower220 { // 220V交流电源打印 public void output220v();}3.3 220v电源实现类
package com.demo.power.v220;import com.demo.power.AbsBasePower;/** * 220V电源 * * @author * */public class Power220 extends AbsBasePower implements IPower220{ // 构造方法 public Power220() { super(220); } // 220V电源输出 public void output220v() { System.out.println("----这是[" + this.getPower() + this.getUnit() + "]电源!..."); }}3.4 12v电源接口
package com.demo.power.v12;/** * 12V 电源接口 * * @author * */public interface IPower12 { // 12V电源打印 public void output12v();}3.5 12v电源实现类
package com.demo.power.v12;import com.demo.power.AbsBasePower;/** * 正常的12V电源 * * @author * */public class Power12 extends AbsBasePower implements IPower12 { // 12V电源构造方法 public Power12() { super(12); } // 12V电源输出 public void output12v() { System.out.println("----这是[" + this.getPower() + this.getUnit() + "]电源!..."); }}3.6 12v电源对象适配器
package com.demo.adapter;import com.demo.power.AbsBasePower;import com.demo.power.v12.IPower12;/** * 电源适配器 (实现目标对象接口 即:12V电源接口) * * @author * */public class AdapterPower12 implements IPower12 { // 待转换的对象 private final AbsBasePower absBasePower; // 适配器构造方法 将待转换对象传入 public AdapterPower12(AbsBasePower absBasePower) { this.absBasePower = absBasePower; } // 实现目标对象方法 public void output12v() { // 获得外部电源值 float powerFloat = this.absBasePower.getPower(); // 进行电源转换 if (powerFloat == 380) { // 380V电源转换 powerFloat = powerFloat / 31.67f; } else if (powerFloat == 220) { // 220V电源转换 powerFloat = powerFloat / 18.33f; } else if (powerFloat == 110) { // 110V电源转换 powerFloat = powerFloat / 9.17f; } else { System.out.println("----不能适配电源!..."); return; } // 处理转换结果 powerFloat = (int) (powerFloat * 10) / 10.0f; System.out.println("----这是[" + powerFloat + this.absBasePower.getUnit() + "]电源!..."); }}3.7 12v电源类适配器
package com.demo.adapter;import com.demo.power.AbsBasePower;import com.demo.power.v12.IPower12;/** * 电源适配器 (实现目标对象接口 即:12V电源接口) 类适配器 模式 * * @author * */public class AdapterPower12Ext extends AbsBasePower implements IPower12 { // 适配器构造方法 将待转换对象传入 public AdapterPower12Ext(AbsBasePower absBasePower) { super(absBasePower.getPower()); } // 实现目标对象方法 @Override public void output12v() { // 获得外部电源值 float powerFloat = this.getPower(); // 进行电源转换 if (powerFloat == 380) { // 380V电源转换 powerFloat = powerFloat / 31.67f; } else if (powerFloat == 220) { // 220V电源转换 powerFloat = powerFloat / 18.33f; } else if (powerFloat == 110) { // 110V电源转换 powerFloat = powerFloat / 9.17f; } else { System.out.println("----不能适配电源!..."); return; } // 处理转换结果 powerFloat = (int) (powerFloat * 10) / 10.0f; System.out.println("----这是[" + powerFloat + this.getUnit() + "]电源!..."); }}3.8 测试适配器
package com.demo;import com.demo.adapter.AdapterPower12;import com.demo.adapter.AdapterPower12Ext;import com.demo.power.v12.IPower12;import com.demo.power.v12.Power12;import com.demo.power.v220.Power220;/** * 客户端程序调用 * * @author * */public class Client { /** * @param args */ public static void main(String[] args) { // 我们首先 生成一个220V电源对象! Power220 power220 = new Power220(); power220.output220v(); // 接下来,我们在生成一个12V电源对象! IPower12 power12 = new Power12(); power12.output12v(); // 最后,我们使用电源适配器 将220V电源转换为12V电源! System.out.println("\n----电源适配器转换中..."); IPower12 adapterPower12 = new AdapterPower12(power220); adapterPower12.output12v(); System.out.println("----电源适配器转换结束!"); // 类适配器实现 System.out.println("\n----类适配器 电源适配器转换中..."); IPower12 adapterPower12Ext = new AdapterPower12Ext(power220); adapterPower12Ext.output12v(); System.out.println("----类适配器 电源适配器转换结束!"); }}3.9 运行结果
----这是[220.0V]电源!...
----这是[12.0V]电源!...
----电源适配器转换中...
----这是[12.0V]电源!...
----电源适配器转换结束!
----类适配器 电源适配器转换中...
----这是[12.0V]电源!...
----类适配器 电源适配器转换结束!
三、设计原则
1使用对象组合,面向接口和抽象编程
2“开一闭”原则
四、使用场合
1 软件系统结构需要升级或扩展,又不想影响原有系统稳定运行的时候
2 转换类之间的差別不是很大的时候
3 想创建一个可以复用的类,该类可以与其他不相关类或不可预见类协同工作的时候
五、类适配器模式和对象适配器模式的静态类图
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了PHP设计模式之适配器模式原理与用法。分享给大家供大家参考,具体如下:一、什么是适配器模式适配器模式有两种:类适配器模式和对象适配器模式。其中类适
什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝
什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝
独立显卡适配器(HighPerformance模式)的图形处理能力和集成显卡适配器(EnergySavings模式)的电源效率。Lenovo允许用户控制何时需要
电源适配器或制造商推荐的电源适配器。 在连接到USB时,iPhone不会进行无线充电。如果您的iPhone使用USB连接到电脑,或者连接到USB电源适配器,则