JAVA中的适配器应用_Java适配器模式应用之电源适配器功能详解

本文实例讲述了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 运行结果

三、设计原则

1使用对象组合,面向接口和抽象编程

2“开一闭”原则

四、使用场合

1 软件系统结构需要升级或扩展,又不想影响原有系统稳定运行的时候

2 转换类之间的差?e不是很大的时候

3 想创建一个可以复用的类,该类可以与其他不相关类或不可预见类协同工作的时候

五、类适配器模式和对象适配器模式的静态类图

希望本文所述对大家java程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值