一模式定义
存在两种适配器模式
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编程中有着广泛的应用场景,无论是对于现有类的接口转换还是新接口的创建,适配器模式都能够提供有效的解决方案。开发者可以根据实际需求选择合适的适配器模式来解决...
这种情况下,就需要采用一种设计模式——**适配器模式**(Adapter Pattern),来解决接口不兼容的问题,从而使得这些优秀的组件可以在新的环境中被重用。 #### 适配器模式的目的与作用 适配器模式的核心目标是**将...
4.3.2组合模式的现实应用——资源管理器 117 4.3.3C#实例——图形树状对象结构 118 4.3.4Java实例——文档格式化 121 4.3.5优势和缺陷 124 4.3.6应用情景 125 4.4DecoratorPattern(装饰模式) 125 4.4.1定义 ...
本文将深入探讨设计模式的概念,以及JAVA中最常见的几种设计模式——工厂模式、观察者模式、单例模式、命令模式、建造者模式、适配器模式、合成模式、桥梁模式等,同时结合清华大学学者张跃平在其著作《JAVA设计模式...
准谐振适配器在电源技术中扮演着重要的角色,主要因为它们能够在提供高效能的同时降低电磁干扰(EMI)。...通过这些技术手段,可以实现低损耗、低噪声和高效率的电源转换,满足现代电子设备对电源适配器的严格要求。
安森美半导体(ON Semiconductor)作为一家领先的电源管理解决方案供应商,最近推出了一个针对游戏机的创新解决方案——200W电源适配器的GreenPoint参考设计。这一设计专为设计工程师提供了一个模板,帮助他们构建出...
本文将深入探讨一种高性价比的电源适配器解决方案——基于AP3710的适配器设计方案,并对比分析集成PWM控制器方案与分立PWM控制器方案。 #### 二、集成PWM控制器方案 集成PWM控制器方案是指将PWM控制器和功率MOSFET...
反激变换器在电子设备电源领域扮演着重要角色,尤其在中小功率应用中,如笔记本电脑适配器、手机适配器和工业电源等,其广泛应用得益于其独特的特性和优势。首先,电路结构简洁,成本较低,同时具有较高的可靠性。...
首先,通用性意味着这种电源适配器能够适用于各种不同的设备和环境。在电子政务中,可能存在多种硬件设备,如服务器、工作站、网络设备等,它们可能需要不同规格的电源输入。一个通用的电源解决方案可以降低维护成本...
飞兆半导体提供的解决方案旨在提升功率敏感应用的能效,如功率适配器、电源、照明应用、计算机、工业控制和家用电器等。这些解决方案能够提高效率,简化系统设计,节省电路板空间,增强系统可靠性,并加速产品上市。...
其中,AP4313作为一款高性能的恒压恒流控制器,为电源适配器和电池充电器等应用提供了理想解决方案。本文将基于给定的文件信息,深入解析AP4313的特性、工作原理及应用领域,旨在为从事电源设计的工程师提供宝贵参考...
更改无线适配器节电模式,修改方法:“开始——控制面板——硬件和声音——电源选项——更改计划设置——更改高级电源设置——无线适配器设置——节能模式——(两个都改成)最高性能”。 3. 创建临时网络时提示...
根据给定的文件信息,本篇文档主要介绍了一款针对手机充电器应用的AC-DC开关电源控制器——LY6305。LY6305是一款高性能的离线式一次侧调节控制器,专为电池充电器和适配器应用设计。以下是LY6305的主要知识点: 1. ...
在这个特定的案例中,我们关注的是一个与电子政务相关的技术应用——铣铇机专用手机充电电源模块。 铣铇机是工业生产中的重要工具,常用于金属切削等工艺。然而,在现代化的工作环境中,移动通信设备如手机已经成为...
可广泛应用于机顶盒、DVD播放机、电源适配器等整机产品中。 内置的15ms软启动电路减小了电路启动时变压器的应力;电路的开关频率为67KHz,振荡电路产生的频率抖动,可以降低EMI;在待机模式下,电路进入打嗝模式...
- **实际应用**:例如,让一个欧洲电源适配器在美国使用。 - **讨论**:适配器模式可以帮助我们在不修改原有代码的基础上实现新的功能。 #### 合成(Composite)模式 合成模式是一个结构型设计模式,它允许你构建...