美文网首页
设计模式第六篇-组合型模式【适配器模式】

设计模式第六篇-组合型模式【适配器模式】

作者: 做个快乐的代码哥 | 来源:发表于2018-04-08 08:53 被阅读12次

设计模式案例分析-github

一、什么是适配器模式?

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

   通俗理解: 为了让旧接口可以兼容满足新接口使用。

二、角色划分?

    1、被适配者 Adaptee: 被转换的接口

    2、目标接口: 即需要实现的功能接口

    3、适配器: Adpter 将被转换的接口(原始接口)转换为目标接口使用,即让原接口与目标接口兼容

三、适配器模式分类?

    1、类适配器,静态关系

        特点:1、 适配器实现目标接口 

                   2、 适配器继承被适配者

                   即: Adapter extends Adaptee implement Target

        优点:   适配器可以重定义Adaptee的部分行为,相当于子类覆盖父类的部分实现方法

        缺点: 因为适配器直接继承了Adaptee,使得适配器不能和Adaptee的子类一起工作,因为继承是静态的关系,当适配器继承了Adaptee后,就不可能再去处理Adaptee的子类了

    2、对象适配器,动态关系

        特点: 1、适配器实现目标接口

                    2、适配器持有被适配者的引用

                  即: Adapter implements Target{

                                   Adaptee adaptee;

                        }

        优点:  对于对象适配器,一个适配器可以把多种不同的源适配到同一个目标。换言之,同一个适配器可以把源类和它的子类都适配到目标接口。因为对象适配器采用的是对象组合的关系,只要对象类型正确,是不是子类都无所谓。

       缺点:  对于对象适配器,要重定义Adaptee的行为比较困难,这种情况下,需要定义Adaptee的子类来实现重定义,然后让适配器组合子类。

  3、建议尽量使用对象适配器的实现方式,多用合成/聚合,当然具体问题还是得具体分析

四、案例?分析

     案例一:   个需求,第一个版本只是实现了美元的功能,现在需求需要支持人民币,同时需要兼容这两种模式,因此可以考虑使用适配器模式,将第一期的美元适配为人民币。

    案例二:  Android listview的适配器模式

        分析? ListView为什么要使用Adapter模式呢? 如何将数据显示在ui上?

         1、ListView需要能够显示各式各样的视图,每个人需要的显示效果各不相同,显示的数据类型、数量等也千变万化。那么如何隔离这种变化尤为重要。因此使用适配器隔离该层。将ListView需要的接口抽象到Adapter(BaseAdapter)对象中,这样只要用户实现了Adapter的接口,ListView就可以按照用户设定的显示效果、数量、数据来显示特定的Item View。 通过代理数据集来告知ListView数据的个数( getCount函数 )以及每个数据的类型( getItem函数 ),最重要的是要解决Item View的输出。Item View千变万化,但终究它都是View类型,Adapter统一将Item View输出为View ( getView函数 ),这样就很好的应对了Item View的可变性。

       2、当然这里的Adapter并不是经典的适配器模式,但是却是对象适配器模式的优秀示例,也很好的体现了面向对象的一些基本原则。这里的Target角色和Adapter角色融合在一起,Adapter中的方法就是目标方法;而Adaptee角色就是ListView的数据集与Item View,Adapter代理数据集,从而获取到数据集的个数、元素。注意到了吗,对象适配器重要特点是持有被适配者的引用,listview适配器模块被适配者就是数据,因此Adapter都需要传入数据,理解了吧。。。

相关文章

  • 设计模式分类汇总

    结构型 适配器模式 组合模式 桥接模式 代理模式 装饰者模式 门面模式 享元模式 行为型 责任链模式 命令模式 解...

  • 设计模式概要

    创建型模式:工厂模型,抽象工厂模型,建造模型,原型模型,单例模型,结构型模式:适配器,桥,组合模型,行为型设计模式...

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • java23种设计模式

    创建型 抽象工厂模式工厂方法建造者模式原型模式单态模式 结构型 适配器模式桥接模式组合模式外观模式装饰者模式享元模...

  • 关于JavaScript设计模式的学习(JavaScript d

    上周写了关于创建型的设计模式,这次是关于结构型。接着上一篇来写了。 2.结构型 2.1适配器模式 2.2组合模式 ...

  • 7. 结构型-桥接模式

    模式简述 桥接模式与适配器模式都是通过组合来完成的,只不过适配器模式是将原本不兼容的设计来适配已达到满足需求的设计...

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

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

  • 设计模式的分类

    接口型模式 适配器模式 外观模式 组合模式 桥接模式

  • 2021-11-17 - 学习记录

    适配器模式 - js: 代理模式 - js 组合模式 - js

  • 设计模式(结构型模式)

    适配器模式、 装饰器模式、 代理模式、 外观模式、 桥接模式、 组合模式、 享元模式 适配器模式 即定义一个包装类...

网友评论

      本文标题:设计模式第六篇-组合型模式【适配器模式】

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