`

设计模式之适配器模式(Adapter)

阅读更多

适配器模式:将一个类或接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

 

适配器模式UML图:


适配器模式使用对象组合,包装被适配者:这种做法还有另外一个优点,被适配者的任何子类,都可以搭配着适配器使用。该模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容,可以让客户从实现的接口解耦。

 

外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让调用方只依赖于高层的外观接口,而不需要关注外观接口背后的细节。

 

外观模式UML图:


设计原则之迪米特原则:只与你直接的朋友通信,不要跟陌生人说话,每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。

 

减少依赖,降低耦合。

 

遵循迪米特原则的一些常用做法:

就任何对象而言,在该对象的方法内,我们只应该调用属于一下范围的方法:

  • 该对象本身
  • 被当作方法参数而传递进来的对象
  • 此方法中创建或者实例化的任何对象
  • 类的实例变量

尽量不要发生类似于如下代码的调用:

/**
 * 返回当前温度
 * @return
 */
public double getTemp(){
	//从气象站返回一个温度计
	Thermometer thermometer = station.getThermometer();
	//从温度计获知当前温度
	return thermometer.getTemperature();
}
 

对于方法的调用者来说,我只关心当前的气温,至于温度是如何测量的并不被关注,以上代码从气象站返回了一个Thermometer对象,无疑给这个类引入了一个新的依赖Thermometer,我们应该尽量减少依赖,降低耦合度,因此以上代码最好改成以下所示:

/**
 * 返回当前温度
 * @return
 */
public double getTemp(){
	//直接从气象站返回一个温度,至于气象站如何测量到这个温度,用什么工具测量温度,干我鸟事?
	return station.getTemperature();
}
 

如此以来,我们就只需要依赖气象站station,根本不需要关心他是如何测量当前温度的了。

 

之所以把适配器模式和外观模式放在一起,主要是因为他们很大程度的相似之处:

  • 适配器模式:隐藏被适配者,让客户端感觉不到后面的变化
  • 外观模式:隐藏一群类的调用,让客户端感觉不到外观后面的变化

除此之外,适配器模式还有一个关键作用是将本不兼容的类或者接口,通过引入适配器,让其能够兼容别的接口,并且还具有透明性,这是该模式的意图所在。

 

参考资料:

Head First 设计模式 (中国电力出版社)

 

 

 

 

 

 

 

  • 大小: 7.3 KB
  • 大小: 10.3 KB
分享到:
评论

相关推荐

    设计模式之 适配器 Adapter C++ 源码

    设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...

    设计模式之适配器模式

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,主要解决系统间接口不兼容的问题。适配器模式允许不同接口的类协同工作,通过创建一个适配器对象来转换不兼容的接口,使得原本由于接口不匹配而...

    java设计模式之适配器模式

    适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...

    设计模式之适配器Adapter

    标题“设计模式之适配器Adapter”暗示我们将深入探讨适配器模式的核心概念和应用场景。适配器模式通常应用于以下场景: 1. 当系统中存在一个已经存在的类,其接口不符合新需求时,可以使用适配器模式来调整接口,使...

    设计模式之适配器模式(Adapter Pattern)

    适配器模式是软件设计模式中的一种,它的主要目的是解决接口不兼容问题,使得原本由于接口差异无法协同工作的类能够协同工作。在实际的软件开发过程中,我们常常遇到这样的情况:旧有的系统或第三方库提供了丰富的...

    设计模式之适配器模式Java实现和类设计图

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不兼容的接口之间进行通信。在这个Java实现中,我们将深入探讨适配器模式的两大类型:类适配器模式和对象适配器模式,并通过具体的代码示例和...

    c++-设计模式之适配器模式(Adapter Pattern)

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个接口转换为客户端期望的另一个接口。适配器模式常用于解决由于接口不兼容而无法正常工作的类之间的协作问题。 适配器模式的组成 目标接口(Target...

    设计模式——适配器模式(adapter)

    适配器模式(Adapter Pattern)是软件设计模式中的一种,其主要目的是解决系统中的接口不兼容问题,使得原本由于接口不匹配而无法一起工作的类能够协同工作。在本文中,我们将深入探讨适配器模式的概念、结构、作用...

    设计模式 - 适配器模式(C++实例)

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...

    设计模式之适配器模式(Adapter模式)

    介绍24设计模式中的Adapter模式,如果使用,实例讲解,等等

    Java设计模式之适配器模式

    ### Java设计模式之适配器模式详解 #### 引言 在软件开发中,我们经常遇到需要使用已有的类库,但这些类库的接口与我们的需求不匹配的情况。这时,适配器模式(Adapter Pattern)便能派上用场。适配器模式是一种...

    设计模式之适配器模式与外观模式demo

    在软件设计领域,设计模式是一种经过时间和实践验证的解决方案,用于解决常见的...这个"设计模式之适配器模式与外观模式demo"资源为学习和实践这两种模式提供了宝贵的实例,对于提升编程技能和设计思维具有积极意义。

    深入浅出设计模式之适配器模式与外观模式

    ### 深入浅出设计模式之适配器模式与外观模式 在软件工程领域,设计模式被广泛地应用于解决常见的编程问题。其中,《Head First 设计模式》是一本非常受欢迎的经典著作,它通过生动有趣的例子帮助读者理解并掌握...

    设计模式的适配器模式的例子

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不同接口的类之间进行通信。适配器模式的核心思想是将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类...

    PHP5设计模式-适配器模式实现

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...

    [结构型模式] head first 设计模式之适配器模式(Adapter)

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,当系统中存在一个已经存在的组件,但其接口不符合当前项目的需求时,适配器模式就能发挥作用。通过适配器,我们可以复用现有的...

Global site tag (gtag.js) - Google Analytics