Java设计模式

Java实现23种设计模式(四):适配器模式(重点掌握)

2020-06-10  本文已影响0人  依然慢节奏

二十三种设计模式分类

设计模式三大分类.jpg

一、概述

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

优点

缺点

场景

有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。


二、实现

1. 结构图

适配器模式(Adapter)包含以下主要角色:

类适配器模式

PS: 类适配器模式耦合度比较高,要求了解组件库中相关组件的内部结构,相对于对象适配器模式用得相对较少;

对象适配器模式

PS:UML结构图可以参考,例子实现并不根据UML图来完成,灵活实现即可;

2. 实现

package cn.missbe.model.adpater;

/**
 * Copyright (c) 2020.
 * Email: love1208tt@foxmail.com
 *
 * @author lyg  2020/4/29 下午4:28
 * description:
 * 电压适配器:英国电压为240V,中国电压为220V
 **/

public class VoltageAdapter {
    public static UKCharger chinaCharger2UKCharger(ChinaCharger chinaCharger) {
        UKCharger ukCharger = new UKCharger();
        ukCharger.voltage = chinaCharger.voltage;
        ukCharger.frequency = chinaCharger.voltage;
        return ukCharger;
    }

    public static ChinaCharger uKCharger2ChinaCharger(UKCharger ukCharger) {
        ChinaCharger chinaCharger = new ChinaCharger();
        chinaCharger.voltage = ukCharger.voltage;
        chinaCharger.frequency = ukCharger.frequency;
        return chinaCharger;
    }
    public static void main(String[] args) {
        /*
         * 实现英国的充电器在中国能够使用,需要转换电压和频率
         */
        UKCharger ukCharger = new UKCharger();
        ChinaCharger chinaCharger = VoltageAdapter.uKCharger2ChinaCharger(ukCharger);
        chinaCharger.charger();

        /*
         * 实现中国的充电器在英国能够使用,需要转换电压和频率
         */
        ukCharger = VoltageAdapter.chinaCharger2UKCharger(chinaCharger);
        ukCharger.charger();
    }
}

/**
 * 英国的充电器标准
 */
class UKCharger {
    String voltage = "240v";
    String frequency = "50HZ";

    public void charger() {
        System.out.println("UKCharger is Charging.");
    }
}

/**
 * 中国的充电器标准
 */
class ChinaCharger {
    String voltage = "220v";
    String frequency = "50HZ";

    public void charger() {
        System.out.println("ChinaCharger is Charging.");
    }
}
上一篇 下一篇

猜你喜欢

热点阅读