19.适配器模式-类适配器模式

UML

类适配器模式

代码实现

需要被适配的类【电源】

适配类【充电器】

定义适配功能的接口【变压器功能】

需要用到适配功能的类【手机-充电时】

测试类【AdapterTest】


需要被适配的类【电源】

package com.yuan.dp.adapter;

/**
 * 提供电源
 * @author Yuan-9826
 */
public class 电源 {
    /**
     * 提供的电源
     */
   public static final int POWER = 220;
}

适配类【充电器】

package com.yuan.dp.adapter;

/**
 * 充电器实现类
 *
 * @author Yuan-9826
 */
public class 充电器 extends 电源 implements 充电功能接口 {


    public 充电器() {
    }

    @Override
    public int inToOut() {
            //流入充电器的电压
            System.out.println("输入的电压是 " + 电源.POWER + "伏");
            try {
                Thread.sleep(1000);
                System.out.println("经过了很复杂的处理......");
                Thread.sleep(1000);
                int newPower = 5;
                System.out.println("输出的电压是 " + power + "伏");
                return newPower;
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        return -1;
    }
}

定义适配功能的接口【变压器功能】

package com.yuan.dp.adapter;

/**
 * 定义充电器应有的功能
 * @author Yuan-9826
 */
public interface 充电功能接口 {

    /**
     * @return 输出电压
     */
    int inToOut();
}

需要用到适配功能的类【手机-充电时】

package com.yuan.dp.adapter;

/**
 * 手机需要充电 需要直连电源充电
 *
 * @author Yuan-9826
 */
public class 手机 {

    充电器 charger;

    public 手机(充电器 charger) {
        this.charger = charger;
    }

    /**
     * 充电方法
     */
    void charge() {

        int power = charger.inToOut();
        if (power > 5) {
            System.out.println("充电电压 > 5V,手机爆炸了");
        } else if (power < 5) {
            System.out.println("充电电压 < 5V,手机依然没电");
        } else {
            System.out.println("手机用5伏电压正常充电啦~");
        }
    }
}

测试类【AdapterTest】

package com.yuan.dp.adapter;

public class AdapterTest {
    public static void main(String[] args) {

        充电器 charger = new 充电器();
        手机 phone = new 手机(charger);
        phone.charge();
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容