美文网首页
结构型之适配器模式

结构型之适配器模式

作者: FisherTige_f2ef | 来源:发表于2021-01-31 23:17 被阅读0次

    适配器模式(Adapter Pattern)

    是指使接口不兼容的类,转化为目标接口兼容的类,像目标类一样工作的模式。

    适配器模式的构成

    目标接口or抽象类(Target):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。

    适配器类(Adapter):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,它通过继承Target(或者把Target作为内部属性new出来使用)并关联一个Adaptee对象使二者产生联系。

    需要进行适配的类(Adaptee):它拥有一个已经存在的接口,这个接口需要适配成目标接口(Target)的使用方式。

    适配器的类型

    类适配器模式:通过一个适配器类(adapter),实现 Target 接口,同时继承了 Adaptee 类,然后在实现的Target 接口方法中调用 Adaptee 类的接口方法 

    对象适配器模式:类比与类适配器,对象适配器与类适配器不同之处在于,类适配器通过继承来完成适配,对象适配器则是通过属性关联(把对象创建出来作为一个属性来使用)来完成

    缺省适配器模式:当不需要实现一个接口所提供的所有方法时,可先设计一个抽象类实现该接口,并为接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可以选择性地覆盖父类的某些方法来实现需求,它适用于不想使用一个接口中的所有方法的情况。

    优点:

    1、将目标类和适配者类解耦;2、灵活性和扩展性非常好,可以让任何两个没有关联的类一起运行;3、提高了复用性

    缺点:

    1、过多地使用适配器,会让系统非常零乱

    应用场景:

    适配器不是在详细设计时添加的,而是解决已经存在项目的问题,为接口做折衷的适配。例如,需要使用一些现有的类,而这些类的接口(如方法名)不符合系统的需要,甚至没有这些类的源代码,如Android的adapter类

    实现:

    目标接口or抽象类(Target)

    public interface Target {

        void doTarget();

    }

    需要进行适配的类(Adaptee)

    public class Adaptee {

        public void doSomething() {

        }

    }

    类适配器模式

    public class Adapter extends Adaptee implements Target{ 

             @Override

             public void doTarget() {

                         super.doSomething(); 

             }

    }

    对象适配器模式

    public class Adapter extends Adaptee implements Target{ 

            private Adaptee adaptee=new Adaptee()

             @Override

             public void doTarget() {

                         adaptee.doSomething(); 

             }

    }

    缺省适配器模式:(略)

    相关文章

      网友评论

          本文标题:结构型之适配器模式

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