• 适配器模式:类适配器和对象适配器


        下面是类适配器和对象适配器的图。适配器模式是用来解决使用不兼容的接口的问题的方案。从下面可以看到2种适配器都有3个类分别是Target, Adaptee,adapter.
          client希望使用的是Target.request()
          而既有类使用的是Adaptee.SpecificRequest()
          request()和SpecificRequest()可能在返回值,参数列表都不同
          类适配器模式和对象适配器模式都是通过嫁接一个Adapter进行转换。
          但是2种模式嫁接的方式不同。
          类适配器模式采用的是多重继承的方式
          class Adapter extends Adaptee implements Target{
                request(){this.SpecificRequest();}
                ....
         }
          对象适配器采用的是包含的方式
          class Adapter implements Taget{
               Adaptee adaptee;
               request(){adaptee.SpecificRequest();}
               ...
           }
          两者的区别我认为有以下几点
          1.类适配器模式需要创建自身来创建一个Adaptee,
            对象适配器模式可以直接使用一个已有的Adaptee的实例来转换接口。
          2. 类适配器继承了Adaptee,所以可以通过覆写来扩展SpecificRequest()
            对象适配器和Adaptee是包含关系不能扩展;(其实也可以扩展的见下面)
          3.类适配器模式因为是继承所以相对静态,而对象适配器模式是包含是组合相对灵活(可以通过写adaptee子类扩展功能)
    类适配器


    对象适配器


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

  • 相关阅读:
    微人事项目-mybatis-持久层
    通过外键连接多个表
    springioc
    Redis 消息中间件 ServiceStack.Redis 轻量级
    深度数据对接 链接服务器 数据传输
    sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取
    sqlserver 索引优化 CPU占用过高 执行分析 服务器检查
    sql server 远程备份 bak 删除
    冒泡排序
    多线程 异步 beginInvoke EndInvoke 使用
  • 原文地址:https://www.cnblogs.com/fengye87626/p/3007449.html
Copyright © 2020-2023  润新知