首页 > 编程 > Java > 正文

Java适配器模式应用之电源适配器功能详解

2019-11-26 09:59:36
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表