码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-06-15 12:31:36      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

解释:

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

解决问题:

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

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

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

目的:

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

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

分类:

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

  对象适配器模式;

结构图:

  技术分享

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

   技术分享

  技术分享

  技术分享

  技术分享

优点:

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

使用环境:

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

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

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

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

 示例:

  技术分享

使用注意:

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

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

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

 

 

扩展:

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

 

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

标签:

原文地址:http://www.cnblogs.com/panpanwelcome/p/5586835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!