• 适配器模式—对象适配器模式


    解释:

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

    解决问题:

      需要的东西有,但不能用,且短时间无法改造。即,使得一个功能适合不同的环境。

      在开发中,系统的数据、行为都匹配,但接口不符时,可以考虑适配器。

      希望复用一些现存的类,但是接口又与复用环境的要求不一致,应该考虑用适配器模式。(使用一个已经存在的类,但它的接口(即,方法),与需要的不相同时)

    目的:

      使控制范围外的一个原有对象与某接口匹配。

      不改变功能、环境的前提下,使用适配器解决他们之间的代沟。

    分类:

      类适配器模式:通过多重继承对一个接口与另一个接口进行匹配。但很多语言不支持,(一个类只可以继承一个父类),所以使用环境有限,效果也有限。

      对象适配器模式;

    结构图:

      

      Target,可以是具体、抽象的类、接口

       

      

      

      

    优点:

      两个类所做的事情相同、相似。但是具有不同的接口时要使用,且类共享同一接口。这样客户就可以统一调用统一接口就心里。更简单、直接、紧凑。

    使用环境:

      在软件开发后期、维护期考虑使用。

      在双方都不太容易修改的时候再使用适配器模式适配。而不是已有不同时就使用它。

      设计系统时,考虑使用第三方开发组件。组件的接口与我们自己的接口是不相同的。

      .NET中的类库DataAdapter是一个已经实现的、非常重要的适配器。DataAdapter用作DataSet和数据源之间的适配器,以便检索和保存数据。DataAdapter通过映射Fill(更改了DataSet中的数据以便与数据源中的数据相匹配)、Update(更改了数据源中的数据以便与DataSet中的数据相匹配)来提供这一适配器。例如,数据源来源不同(SQL Server、Oracle……),其数据组织不同,但可以通过DataAdapter得到统一的DataSet数据。不必关注数据库的数据细节,就可以灵活使用数据。

     示例:

      

    使用注意:

      适配器模式是好模式,单不能无视应用场合而盲目使用,导致本末倒置。

      如果能事前预防接口不同的问题,不匹配就不会发生;有效接口不统一问题发生时,及时重构,问题不至于扩大;只有碰到无法改变原有设计、代码的情况时,才考虑适配。

      事后控制不如事中控制,事中控制不如事前控制。

    扩展:

      软件开发初期。公司内部,类、方法的命名应该规范,最好前期就设计好。如果出现类似的功能类不同程序员定义方法的名称不同时。应该考虑通过重构统一接口,而不应该使用适配器。

  • 相关阅读:
    poj 1321 棋盘问题 (dfs)
    poj 3274 Gold Balanced Lineup(哈希 )
    poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)
    zoj 3351 Bloodsucker(概率 dp)
    poj 1840 Eqs (hash)
    poj 2418 Hardwood Species (map)
    poj 2151 Check the difficulty of problems(概率dp)
    poj 2442 Sequence(优先队列)
    poj 1442 Black Box(堆 优先队列)
    两个STL网址 总结的很好 && c++堆的网址
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/5586835.html
Copyright © 2020-2023  润新知