java 设计模式之适配器模式的详解

 更新时间:2017年07月15日 10:45:03   投稿:lqh  
这篇文章主要介绍了java 设计模式之适配器模式的详解的相关资料,需要的朋友可以参考下

java 设计模式之适配器模式的详解

前言:

      适配器模式(Adapter Pattern)又叫做变压器模式,也叫做包装模式。包装模式还包括装饰模式。

       在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。
一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

UML类图:

 具体代码:

public class Client {
  public static void main(String[] args) {
    Adaptee adaptee = new Adaptee();
    Adapter adapter = new Adapter(adaptee);
    adapter.request();
  }
}

public interface Target {
  void request();
}

public class Adaptee {
  void adapteeRequest() {
    System.out.println("本类");
  }
}

public class Adapter implements Target {

  Adapter(Adaptee adaptee) {
    this.adaptee = adaptee;
  }
  private Adaptee adaptee;
  @Override
  public void request() {
    System.out.println("适配类");
    adaptee.adapteeRequest();
  }
}

举例说明:

       此模式日常的例子,最常见的就是各种各样的转接口,Mac本连投影仪,一般都是需要转接口转接一下的,这就是适配器模式。

在实际开发的例子中,现在系统都是迭代开发的,一步步累计,出现的情况就是,同样的功能可能有两个或多个不同的接口,
有的需要调用之前的,有的调用后来的,都乱掉了,那就需要加一层适配器,把两个新旧的兼容起来。

适用场景:

       你想使用一个已经存在的类,而它的接口不符合你的需求。
       你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
       你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口

优缺点:

优点:

更好的复用性和扩展性

缺点:

很多的适配器结合起来,会使系统过于过乱,不容易把握。

总结:适配器模式相对简单,总结起来就是两个字“兼容”,这就是这种模式的精髓,当然系统不需要兼容更好。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Java初学之继承与多态

    Java初学之继承与多态

    这篇文章主要介绍了Java 继承与多态的深入理解的相关资料,子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为,需要的朋友可以参考下
    2021-07-07
  • Java编程实现逆波兰表达式代码示例

    Java编程实现逆波兰表达式代码示例

    本文主要对Java算法逆波兰表达式的相关内容作了介绍,涉及逆波兰表达式的定义已经在Java中的实现,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • @ControllerAdvice 用法解析

    @ControllerAdvice 用法解析

    @ControllerAdvice就是@Controller 的增强版,@ControllerAdvice主要用来处理全局数据,一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用,这篇文章主要介绍了@ControllerAdvice 用法,需要的朋友可以参考下
    2022-11-11
  • Spring Boot学习入门之AOP处理请求详解

    Spring Boot学习入门之AOP处理请求详解

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,下面这篇文章主要给大家介绍了关于Spring Boot学习入门之AOP处理请求的相关资料,需要的朋友可以参考下。
    2017-09-09
  • JDBC中Fetchsize的实现

    JDBC中Fetchsize的实现

    fetchsize是指在执行数据库查询时,每次从数据库中获取的记录条数,它对内存使用和网络传输效率有重要影响,在MyBatis中,可以通过全局设置或语句级别设置fetchsize,来控制查询操作的内存使用和提升性能,合理的fetchsize设置能有效减少网络往返次数和防止内存溢出
    2024-09-09
  • 经典的Java面试题及回答集锦(基础篇)

    经典的Java面试题及回答集锦(基础篇)

    本文给大家收藏整理了java面试题及回答,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-03-03
  • 详解JAVA类加载机制

    详解JAVA类加载机制

    这篇文章主要介绍了JAVA类加载机制的相关知识,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 快速解决commons-fileupload组件无法处理自定义head信息的bug

    快速解决commons-fileupload组件无法处理自定义head信息的bug

    问题在于fileupload组件解析完自定义的head节点后,却忘记传递到FileItemStreamImpl中了,稍作修订,即可修正该bug
    2013-08-08
  • SpringBoot中swagger的使用

    SpringBoot中swagger的使用

    这篇文章主要介绍了SpringBoot中swagger的使用,文中有非常详细的代码示例,对正在学习swagger的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • Dubbo框架线程池使用介绍

    Dubbo框架线程池使用介绍

    当我们在使用dubbo的时候,是可以通过调整线程池来达到调优的效果,我们可以在dubbo:protocol 标签中使用用threadpool属性选择自己想要使用的线程池,通过threads属性配置服务线程数,queues属性配置使用的队列
    2022-09-09

最新评论