zoukankan      html  css  js  c++  java
  • 适配器模式探讨

     

    要点

    ² 一个类的程序设计接口不太方便于某一个专用场合;

    ² 具备共同特征的类有很多,也就是有共同特征,且不适用于同样的专有场合;

    ² 可以把一个类的程序设计接口转换成另一个接口,这就是适配器模式;

    ² 适配器模式通过两种方法可以实现:第一是从原有的类派生新类,然后添加新的一致的方法,使得新类可以符合需要的接口;第二种方法是通过对象组合,也就是适配器类有一个原有类型的数据成员,把它包装成另一组使用接口,这种方法隐藏了原有类型的接口;

    ² 适配器模式作为结构型模式,特点是每个类型都有一个适配器,无论是派生还是组合,都是一个类型包装成另一个类型接口,而不是多个类型接口组合成一个接口,所以适配器是结构型模式里面的简单情形。

    用途

    例如,C#提供的winform控件ListBox,其集合数据的操作必须通过属性Items来操作。例如,Items.Add(),Items.Clear()等等。为了直接方便地使用,而不是通过Items,我们可以通过适配器模式把这些接口转换成另外一组接口来使用。

    适配器模式正如平时所用的适配器,例如计算机经常使用的网络适配器,键盘适配器。还如原来的大口接头的键盘和小口接口使用的时候采用转接线,本身就是适配器的很好例子。

                                                                   图1
    如图1所示,是依据两种方法构造的适配器。通过继承构造的叫类适配器,而通过组合构造的叫对象适配器。对象适配器的优点是可以隐藏原有类型的接口,因为目的就是把原有的类型接口包装成另外的一组接口,因此隐藏起来要好一些。但是在只包装部分接口的情况下,就不能隐藏原有类型接口了。
                                                                      图2
      图2所示,是适配器类型的更进一步创建方法。在某些情形下,情况可能比较复杂,如果采用图1所示的方法,对系统的扩展性不利,而且耦合会太紧密。通过抽象方法定义一个接口,这个就是抽象层,然后客户程序DemoWinForm与这个抽象层发生耦合,也就是直接使用这个接口,而不是实际的类型。

    这样一来,如果添加新的适配器将非常方便,而且如果适配器发生变更,也无需修改客户程序。客户程序通过抽象层消除了与实际类型的耦合。

  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/worldreason/p/1214529.html
Copyright © 2011-2022 走看看