Java学习笔记之适配器模式

来源:互联网 发布:地方财政收入来源 知乎 编辑:程序博客网 时间:2024/06/16 04:19

一、什么是适配器模式

顾名思义,适配器模式(Adapter Pattern)当然是用来适配的啦。当你想使用一个已有的类,但是这个类的接口跟你的又不一样,不能拿来直接用,这个时候你就需要一个适配器来帮你了。

二、适配器模式类图

三、 适配器模式示例代码

package Adapter;// 实现国标接口的充电方法public class CnPlugin implements CnPluginInterface {    public void chargeWith2Pins() {        System.out.println("charge with CnPlugin");    }}  package Adapter;//国标接口public interface CnPluginInterface {    void chargeWith2Pins();}package Adapter;// 实现英标接口的充电方法public class EnPlugin implements EnPluginInterface {    public void chargeWith3Pins() {        System.out.println("charge with EnPlugin");    }} package Adapter;//英标接口public interface EnPluginInterface {        void chargeWith3Pins();} package Adapter;// 适配器public class PluginAdapter implements EnPluginInterface {    private CnPluginInterface cnPlugin;    public PluginAdapter(CnPluginInterface cnPlugin) {        this.cnPlugin = cnPlugin;    }    // 这是重点,适配器实现了英标的接口,然后重载英标的充电方法为国标的方法    @Override    public void chargeWith3Pins() {        cnPlugin.chargeWith2Pins();    }}  package Adapter;//在室内充电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.chargeWith3Pins();        }}package Adapter;// 英标测试类public class Test {    public static void main(String[] args) {        EnPluginInterface enPlugin = new EnPlugin();        Home home = new Home(enPlugin);        // 会输出 “charge with EnPlugin”        home.charge();    }}
0 0
原创粉丝点击