Java适配器模式应用之电源适配器功能详解
程序员文章站
2023-12-13 10:02:04
本文实例讲述了java适配器模式应用之电源适配器功能。分享给大家供大家参考,具体如下:
一、模式定义
存在两种适配器模式
1 对象适配器模式,在这种适配器模式中,适配...
本文实例讲述了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程序设计有所帮助。