zoukankan      html  css  js  c++  java
  • 适配器模式—对象适配器模式

    解释:

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

    解决问题:

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

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

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

    目的:

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

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

    分类:

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

      对象适配器模式;

    结构图:

      

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

       

      

      

      

    优点:

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

    使用环境:

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

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

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

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

     示例:

      

    使用注意:

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

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

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

    扩展:

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

  • 相关阅读:
    窗体设计器出不来
    maven ...../.m2/settings.xml
    myeclipse.ini
    人民币大小写
    驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立 安全连接。错误:
    写了一个浏览器插件
    用Excel计算加权平均分和GPA
    cfree使用cygwin编译程序出现计算机丢失cygwin1.dll解决办法
    apt-cyg update --2017-02-17 07:57:24-- http://mirrors.163.com/cygwin//x86_64/setup.bz2 正在解析主机 mirrors.163.com... 123.58.173.185, 123.58.173.186 正在连接 mirrors.163.com|123.58.173.185|:80... 已连接。 已发出 HTT
    生产者消费者问题
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/5586835.html
Copyright © 2011-2022 走看看