美文网首页
适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)

作者: 群众里面有坏人呐 | 来源:发表于2018-12-23 21:32 被阅读0次

    定义

    将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
    把一个类的接口变成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。

    为什么要用适配器模式

    • 可以让任何两个没有关联的类一起运行
    • 提高了类的复用,想使用现有的类,而此类的接口标准又不符合现有系统的需要。通过适配器模式就可以让这些功能得到更好的复用。
    • 增加了类的透明度,客户端只关注结果
    • 使用适配器的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。

    实例

    现在安卓主要有两种数据线:Type-C和Micro USB,很多手机都配置了Type-C转接头(适配器),用Type-C的手机有了转接头(适配器)也能用Micro USB充电

    类适配器

    定义Micro USB类

    public class MicroDataLine {
        public void connect(){
            System.out.println("connect with micro data line...");
        }
    }
    

    定义DataLine接口

    public interface DataLine {
        public void connect();
    }
    

    定义TypeCDataLine实现DataLine

    public class TypeCDataLine implements DataLine{
        @Override
        public void connect() {
            System.out.println("connect with Type-C data line...");
        }
    }
    

    定义适配器继承原有类实现数据线接口

    public class TypeCAdaptor extends MicroDataLine implements DataLine {
        @Override
        public void connect() {
            System.out.println("use Type-C adaptor");
            super.connect();
        }
    }
    

    测试代码

    public class Test {
        public static void main(String[] args) {
            DataLine dataLine = new TypeCDataLine();
            dataLine.connect();
            DataLine adaptor = new TypeCAdaptor();
            adaptor.connect();
        }
    }
    

    输出

    connect with Type-C data line...
    use Type-C adaptor
    connect with micro data line...
    

    对象适配器

    创建适配器类,实现标准接口,将这个调用委托给实现新接口的对象来处理

    public class TypeCAdaptor implements DataLine {
        DataLine dataLine = new TypeCDataLine();
        public TypeCAdaptor(DataLine dataLine) {
            this.dataLine = dataLine;
        }
        @Override
        public void connect() {
            System.out.println("use Type-C adaptor...");
            dataLine.connect();
        }
    }
    

    测试

    public class Test {
        public static void main(String[] args) {
            TypeCAdaptor adaptor = new TypeCAdaptor(new TypeCDataLine());
            adaptor.connect();
        }
    }
    

    输出

    use Type-C adaptor...
    connect with Type-C data line...
    

    相关文章

      网友评论

          本文标题:适配器模式(Adapter Pattern)

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