关闭

java设计模式之适配器模式

262人阅读 评论(0) 收藏 举报
分类:

示例代码:

// 英标接口
public interface EnPluginInterface {
    void chargeWith3 Pins();
}

// 实现英标接口的充电方法
public class EnPlugin implements EnPluginInterface {
    public void chargeWith3 Pins() {
        System.out.println("charge with EnPlugin")
    }
}

// 在室内充电
public class Home {
    private EnPluginInterface enPlugin;

    public Home() { }

    public Home(EnPluginInterface enPlugin) {
        this.enPlugin = enPlugin;
    }

    public void setPlugin(EnPluginInterface enPlugin) {
        this.enPlugin = enPlugin;
    }

    // 充电
    public void charge() {
        enPlugin.chargeWith3 Pins();
    }
}

// 英标测试类
public class Test {
    public static void main(String[] args) {
        EnPluginInterface enPlugin = new EnPlugin();
        Home home = new Home(enPlugin);

        // 会输出 “charge with EnPlugin”
        home.charge();
    }
}


// 现在你回内陆了,只能用国标充电

// 国标接口
public interface CnPluginInterface {
    void chargeWith2 Pins();
}

// 实现国标接口的充电方法
public class CnPlugin implements CnPluginInterface {
    public void chargeWith2 Pins() {
        System.out.println("charge with CnPlugin");
    }
}

// 适配器
public class PluginAdapter implements EnPluginInterface {
    private CnPluginInterface cnPlugin;

    public PluginAdapter(CnPluginInterface cnPlugin) {
        this.cnPlugin = cnPlugin;
    }

    // 这是重点,适配器实现了英标的接口,然后重载英标的充电方法为国标的方法
    @Override
    public void chargeWith3 Pins() {
        cnPlugin.chargeWith2 Pins();
    }
}

// 适配器测试类
public class AdapterTest {
    public static void main(String[] args) {
        CnPluginInterface cnPlugin = new CnPlugin();
        Home home = new Home();
        PluginAdapter pluginAdapter = new PluginAdapter(cnPlugin);
        home.setPlugin(pluginAdapter);

        // 会输出 “charge with CnPlugin”
        home.charge();
    }
}

应用:

前面已经说了,当你想使用一个已有的类,但是这个类的接口跟你的又不一样,不能拿来直接用,这个时候你就需要一个适配器来帮你了,其主要作用就是在旧的接口、新的接口之间完成适配。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:19293次
    • 积分:481
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:14篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论