美文网首页Java基础Android
[设计模式]适配器模式

[设计模式]适配器模式

作者: Merbng | 来源:发表于2020-03-16 15:30 被阅读0次

    定义

    • 将某个类的接口转换成客户期望的另一个接口表示,使因为接口不兼容导致不能在一起工作的某些类能在一起工作。
    • 别名为包装器
    • 根据适配器类与适配者的关系的不同,可分为对象适配器和类适配器
    • 在对象适配器中,适配器与适配者是 关联关系
    • 在类适配器中,适配器与适配者是 继承(或实现)关系

    例子

    就拿日本电饭煲的例子进行说明,日本电饭煲接口标准是110v电压,而中国标准电压接口是220v,所以想要在中国用日本电饭煲,就需要一个电源转换器

    
    /**日本11v 电源接口
     * Created by merbng on 2020/3/14.
     */
    
    public interface JP110VInterface {
          void connect();
    }
    
    
    /**
     * 日本110v 电源
     * Created by merbng on 2020/3/14.
     */
    
    public class JP110VInterfaceImpl implements JP110VInterface {
        @Override
        public void connect() {
            Log.e("", "日本110V电源开始工作...");
        }
    }
    
    
    /**中国220v 电源接口
     * Created by merbng on 2020/3/14.
     */
    
    public interface China220VInterface {
        public void connect();
    }
    
    /**
     * 中国220v 电源
     * Created by merbng on 2020/3/14.
     */
    
    public class China220VInterfaceImpl implements China220VInterface {
        @Override
        public void connect() {
            Log.e("==设计模式:适配器模式==", "中国220V电源开始工作...");
        }
    }
    
    
    /**
     * 电饭煲
     * Created by merbng on 2020/3/14.
     */
    
    public class ElectricCooker {
        private JP110VInterface jp110VInterface;
    
        public ElectricCooker(JP110VInterface jp110VInterface) {
            this.jp110VInterface = jp110VInterface;
        }
    
        public void work() {
            jp110VInterface.connect();
            Log.e("==设计模式:适配器模式==","电饭煲开始工作...");
        }
    }
    
    
    
    /**
     * Created by merbng on 2020/3/14.
     */
    
    public class PowerAdapter implements JP110VInterface {
        China220VInterface china220VInterface;
    
        public PowerAdapter(China220VInterface china220VInterface) {
            this.china220VInterface = china220VInterface;
        }
    
        @Override
        public void connect() {
            china220VInterface.connect();
        }
    }
    
    
    
    public class AdapterModeTest extends Activity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            China220VInterface china220VInterface = new China220VInterfaceImpl();
            PowerAdapter adapter = new PowerAdapter(china220VInterface);
            ElectricCooker electricCooker = new ElectricCooker(adapter);
            electricCooker.work();
        }
    }
    

    总结

    主要优点:

    • 1.将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无需修改原有结构。
    • 2.增加了类的透明性和复用性,将具体的业务实现过程封装在适配者类中,对于客户端而言是透明的,而且提高了适配者的复用性,同一个适配者类可以在多个不同的系统中复用。
      1. 灵活性扩展性都非常好,通过使用配置文件,可以很方便的更换适配器,也可在不修改原有代码的基础上增加新的适配器,完全符合“开闭原则”

    缺点:
    过多的使用适配器会让系统显得过于凌乱,如果不是很远必要,可以不使用适配器而是直接对系统进行重构

    参考链接:

    相关文章

      网友评论

        本文标题:[设计模式]适配器模式

        本文链接:https://www.haomeiwen.com/subject/bfpgehtx.html