设计模式——适配器模式(Adapter)

本文详细介绍了适配器设计模式的实现,通过笔记本电脑、电源插座和电源适配器的具体案例,展示了如何解决不同接口之间的兼容性问题。文章包括UML结构图、代码示例及测试实例。

代码:GitHub

适配器设计模式(笔记本+电源+插座)

0. UML结构图

适配器模式UML结构图

1. Code示例

1.1 笔记本

/**
 * 笔记本电脑
 *
 * @author ALion
 * @version 2019/1/29 22:31
 */
public class Laptop {

    /** 电流 */
    private double electricity;

    /**
     * 充电
     * @param target 适配器
     */
    public void charge(Target target) {
        System.out.println("开始充电");
        while (electricity < 100) {
            electricity += target.transport();
            System.out.println("电量已有 " + electricity);
        }
        System.out.println("充电完成");
    }

}

1.2 电源插座

/**
 * 电源插座
 *
 * @author ALion
 * @version 2019/1/29 22:42
 */
public class PowerOutlet {

    /**
     * 返回电流
     * @return 电流值
     */
    public int getElectricity() {
        return 10;
    }

}

1.3 电源适配器

/**
 * 电源适配器
 *
 * @author ALion
 * @version 2019/1/29 22:34
 */
public class PowerAdapter implements Target{

    private PowerOutlet outlet;

    public PowerAdapter(PowerOutlet outlet) {
        this.outlet = outlet;
    }

    @Override
    public double transport() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return outlet.getElectricity() * 0.5;
    }

}

1. 4 电源接口

/**
 * 电源接口
 *
 * @author ALion
 * @version 2019/1/29 22:45
 */
public interface Target {

    /**
     * 电流传输转换
     * @return 电流
     */
    double transport();

}

2. Test示例

/**
 * 适配器模式测试
 *
 * @author ALion
 * @version 2019/1/29 22:30
 */
public class AdapterTest {

    public static void main(String[] args) {
        Laptop laptop = new Laptop();
        PowerOutlet outlet = new PowerOutlet();
        PowerAdapter adapter = new PowerAdapter(outlet);
        laptop.charge(adapter);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值