美文网首页
适配器模式-三类实现

适配器模式-三类实现

作者: lbcBoy | 来源:发表于2018-05-16 13:42 被阅读13次
  • 定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。

  • 属于结构型模式

  • 主要分为三类:类适配器模式、对象的适配器模式、接口的适配器模式

自定义场景:
唱歌、跳舞两件事不能同时实现。

类适配器模式
  • 自定义场景:
    唱歌是接口、跳舞是类;

  • 一句话解释:
    Wrapper 类,通过继承 Dance 类,实现 Sing 类接口,完成Dance ->Sing 的适配;


    类适配器.png
  • 代码:

      //唱歌
      public interface Sing {
          public String doSing();
      }
    
      //跳舞
      public class Dance {
          public String doDance() {
              return "doDance";
          }
      }
    
      //唱跳
      public class Wrapper extends Dance implements Sing {
    
          @Override
          public String doSing() {
              return "doSing and " + doDance();
          }
    
          public static void main(String[] args) {
              Wrapper wrapper = new Wrapper();
              System.out.print(wrapper.doSing());
          }
      }
    
对象适配器模式
  • 自定义场景:
    唱歌是接口、跳舞是类;

  • 一句话解释:
    Wrapper 类,通过持有 Dance 类(可换成使用反射),实现 Sing 类接口,完成Dance ->Sing 的适配;


    对象适配器.jpg

    注意:Wrapper中持有Dance类在UML中没显示;

  • 代码:

      //唱歌
      public interface Sing {
          public String doSing();
      }
    
      //跳舞
      public class Dance {
          public String doDance() {
              return "doDance";
          }
      }
    
      //唱跳
      //对象适配器
      public class Wrapper implements Sing {
          private Dance dance;
    
          public Wrapper(Dance dance) {
              this.dance = dance;
          }
    
          @Override
          public String doSing() {
              return "对象适配器:doSing and " + dance.doDance();
          }
    
          public static void main(String[] args) {
              Wrapper wrapper = new Wrapper(new Dance());
              System.out.print(wrapper.doSing());
          }
      }
    
接口适配器模式
  • 自定义场景:
    唱歌是接口(多个方法);MySing只想用唱中的一种方法;

  • N句话解释:
    通过抽象类来实现适配;

当存在这样一个接口,其中定义了很多很多方法;而我们现在却只想使用其中的一个到几个方法,如果我们直接实现接口,那么我们要对所有的方法进行实现,就算我们对不需要的方法进行置空(只写一对大括号,不作具体方法实现)也会导致着这个类变得臃肿,调用不便。这时我们可以使用一个抽象类作为适配器,用这个抽象类实现接口,而在抽象类中所有方法都进行置空;那么我们在创建抽象类的继承类,而且只重写我们需要使用的那几个方法就行。

接口适配器.jpg
  • 代码:

      //有多个唱歌方法的接口
      public interface Sing {
          public String doSing();
    
          public String doSingA();
    
          public String doSingB();
      }
    
      //接口适配器
      abstract class Wrapper implements Sing {
    
          public String doSing() {
              return null;
          }
    
          public String doSingA() {
              return null;
          }
    
          public String doSingB() {
              return null;
          }
      }
    
      //适配器的使用,只用一个方法
      public class MySing extends Wrapper {
          //我在使用第一种唱歌方法的时候,就不需要把其他方法也实现;
          @Override
          public String doSing() {
              return "只用一种唱歌";
          }
      }
    

感谢网友的分分享:
https://blog.csdn.net/u013276277/article/details/78394756
https://blog.csdn.net/zxt0601/article/details/52848004
https://blog.csdn.net/psp0001060/article/details/50738580

相关文章

  • 设计模式(Design Patterns)适配器模式(Adapt

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类的适配器模式 场景:将一个类转换成...

  • 适配器模式

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。适配器模式将某个类的接口转换成客户端期...

  • 适配器模式

    目录 1、什么是适配器模式? 2、适配器模式结构? 3、如何实现适配器模式? 4、适配器模式的特点? 5、适配器模...

  • 适配器模式-三类实现

    定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的...

  • 2019-02-24——设计模式 适配器模式

    适配器模式是将一个接口转换成库所需的另一个接口。适配器模式按照使用情景可分为三类: 接口适配器 类适配器 对象适配...

  • 结构型-Adapter

    适配器模式的原理与实现 适配器模式 的英文翻译是 Adapter Design Pattern。顾名思义,这个模式...

  • iOS常用设计模式总结(一)

    设计模式大概分成三类: 1.创建型:单例设计模式、抽象工厂设计模式 2.结构型:MVC 模式、装饰器模式、适配器模...

  • 适配器模式

    一、适配器模式 二、实例代码 披着羊皮的狼 三、STL中的适配器模式 deque就是适配器,使用deque实现了s...

  • 读《大话设计模式》二

    结构型模式 适配器模式 模式动机 适配器提供客户类需要的接口,适配器的实现就是把客户类的请求转化为对适配者的相应接...

  • Java中的适配器模式

    1.概述 在本快速教程中,我们将了解Adapter模式及其Java实现。 2.适配器模式 适配器模式充当两个不兼容...

网友评论

      本文标题:适配器模式-三类实现

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