java-设计模式-适配器模式

适配器模式是 将一个类的接口 转换 成 客户 需要的接口的一种模式。

来个类图:

下面有个实例,我们中国的电压是220V的,但是手机的电压很多是12V的,那手机需要进行充电,怎么办呢?来个电源适配器

中国电源类:


/**
 * 提供电源 - 中国电源
 */
public class ChinaElectricSource {

  /**
     * 提供电压 只能输出220V的电压
     * @return
     */
    public int offerV(){
        return 220;
    }
}

中国电源它只提供 220V的接口,但是手机需要的是12V的接口,中国电源不满足这个需求。

手机电源适配器类:


/**
 * 提供电源 - 电源适配器
 */
public class PhoneElectricAdapter extends ChinaElectricSource{

    /**
     * 改造者
     */
    private Adaptee adaptee = new Adaptee();

    /**
     * 提供12V电源
     */
    public int offerV() {
        return adaptee.offerV12(super.offerV());
    }
}

电源适配器类中 继承了中国电源类,重写了offerV方法,需要保证提供的电压是12V的。这个12V是怎么实现的呢,是通过Adaptee改造者实现的。

改造者(被适配的对象)类:

/**
 * 改造者
 */
public class Adaptee {
    public int offerV12(int offerV){
        System.out.println("提供的电压 "+offerV);
        System.out.println("经过一序列 转换 转换成 12V了");
        return 12;
    }
}

这个改造者就是电源适配器的内部工作原理了。

来个测试:

    public static void main(String[] args) {
        System.out.println("*************手机需要充电 需要12V 的电源");
        System.out.println("*************但是中国的电源额定电源为 220V");
        ChinaElectricSource source = new PhoneElectricAdapter();
        System.out.println("*************需要的电压 "+source.offerV());
    }

测试结果:

*************手机需要充电 需要12V 的电源
*************但是中国的电源额定电源为 220V
提供的电压 220
经过一序列 转换 转换成 12V了
*************需要的电压 12

我觉得设计模式不是古板的东西,设计模式是一种思想,这个思想可以灵活变通。

发布了60 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xiaoluo5238/article/details/104644371