厚积薄发打卡Day33 :[kuangStudy] GoF23通俗易懂的设计模式之 <适配器模式>

前言:

视频教程:狂神说Java之通俗易懂的23种设计模式

什么是设计模式/p>

  • 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。
    它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案==> 一种思维,一种态度,一种进步
  • 1995年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了23种设计模式,从此树立了软件设计模式领域的里程碑,人称 【GoF设计模式】
设计模式分类 具体模式
创建型模式:
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
?单例模式、?工厂模式、?抽象工厂模式、?建造者模式、?原型模式
结构型模式:
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
?适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
行为型模式:
这些设计模式特别关注对象之间的通信。
模板方法模、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式

适配器模式:

  • 将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类,可以在一起工作。

    • 举个例子:
      厚积薄发打卡Day33 :[kuangStudy] GoF23通俗易懂的设计模式之 <适配器模式>

      有自带网线的转换器,这时自己买的网线用不上:

      对象适配器:

      相当于买了个 可拔插式的转接器,需要用自己的网线

      厚积薄发打卡Day33 :[kuangStudy] GoF23通俗易懂的设计模式之 <适配器模式>

      小结:

      • 对象适配器优点

        • 一个对象适配器可以把多个不同的适配者适配到同一个目标
        • 可以适配一个适配者的子类,由于适配器和适配者之间是关联关系,根据“里氏代换原则”,适配者的子类也可通过该适配器进行适配.
      • 类适配器缺点

        • 对于Java,C#等不支持多重类继承的语言,一次最多只能适配一个适配者类,不能同时适配多个适配者;
        • 在Java,C#等语言中,类适配器模式中的目标抽象类只能为接口,不能为类,其使用有一定的局限性。
      • 适用场景

        • 系统需要使用一些现有的类,而这些类的接口(如方法名)不符合系统的需要,甚至没有这些类的源
          代码.

        • 想创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作.

        • 因此适配器模式又称 弥补形模式

          怪不得在平时的二开工作中看到老大用过

      应用案例:

      1. io流中的InputStreamReader 和 OutputStreamWriter

        设计模式在JDK中的应用

        1. java.io.InputStreamReader(InputStream)

          将输入的字节流转换为字符流

        2. java.io.OutputStreamWriter(OutputStream)

      2. 在SpringMVC中的DispatcherServlet 中的doDispatch() 有使用

        适配器模式在Spring源码中的应用

        适配器模式在 SpringMVC 中的经典使用体现在它的核心方法 doDispatch 方法中,再来看一个 Spring MVC 中的 HandlerAdapter 类,它也有多个子类,类图如下。

        厚积薄发打卡Day33 :[kuangStudy] GoF23通俗易懂的设计模式之 <适配器模式>

        设计模式|适配器模式使用案例、适配器模式在源码中的应用

        位于org.springframework.web.servlet包中的DispatcherServlet是servlet接口的实现类,作用是处理请求并返回结果。在servlet容器接收到一个请求时,servlet容器会针对这个请求创建一个servletRequest和servletRespones对象,相应的处理方法会通过servletRequest中携带的参数对应处理请求,再通过servletRespones对象商城请求的响应结果。

        DispatcherServlet类的doDispatch方法是处理请求的核心逻辑,截取部分内容如下

      3. Collections 的 enumeration 方法

        适配器模式在开源代码中的应用

        public static T> EnumerationT> enumeration(final CollectionT> c) {   return new EnumerationT>来源:coolgwayne
                                                                

        声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月8日
下一篇 2021年2月8日

相关推荐