GOF
《设计模式》一书对Adapter模式是这样描述的:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。
这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求:
1)
为都有“显示”(display)行为的点、线、正方形分别创建类。
2)
客户对象不必知道自己到底拥有点、线、还是正方形。它只需知道拥有这些形状中的一个。
也就是说,我们要用一个更高层次的概念将这些具体形状都涵盖进去,这个高层概念可以称为:“可显示的形状”。因此,我们需要创建一个接口Shape:
interface
Shape{
public
void
display();
}
现在客户忽然间有让我们给这个系统增加一个画圆的功能。这个看起来很简单,只需定义一个
Circle
类来实现
Shape
接口,但是我们要给它编写
display
方法,这可不是件简单的事,假如此时我们正好发现一个
XXCircle
类,它有一个方法刚好可以完成这个功能,那么有没有更好的方法来利用它呢,这时我们就要用到
Adapter
模式了。
XXCircle
代码如下:
class
XXCircle{
public
void
displayCircle(){
System.
out
.println(
"
通过
XXCircle.displayCircle()
画圆
"
);
}
}
Adapter
模式有两种类型:
1)
对象
Adapter
模式,它依赖于一个对象(适配器)包含另一个对象
(
被适配的对象
)
。
class
CircleObject
implements
Shape{
public
XXCircle
circle
;
public
CircleObject(XXCircle xxcircle){
circle
=xxcircle;
}
public
void
display() {
circle
.displayCircle();
}
}
public
class
Client {
public
static
void
main(String[] args) {
XXCircle circle=
new
XXCircle();
CircleObject co
=
new
CircleObject(circle);
co
.display();
}
}
2)
类Adapter模式,它是通过多重继承来实现的(java中没有多继承,是通过接口来实现的)。
class
CircleClass
extends
XXCircle
implements
Shape{
public
void
display() {
super
.displayCircle();
}
}
public
class
Client {
public
static
void
main(String[] args) {
CircleClass cc=
new
CircleClass();
cc.display();
}
}
小结:Adapter模式是一个很常用的模式,它将一个(或多个)类的接口转换成我们需要类所具备的一个接口。它的实现方式是:创建一个具备所需接口的类,然后包装原有类的方法,这样实际上就包含了被适配的对象。它主要适用于以下几种情况:
1)
你希望使用他人编写的子程序或方法,因为你需要它所执行的功能。
2)
你无法将这个子程序直接加入程序中。
3)
子程序的接口或调用方式与需要使用它的相关对象不完全相同。
相关推荐
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java编程中,这种模式常用于解决新旧系统之间的对接问题,或者是引入第三方库时接口不匹配的情况。适配器模式的核心思想是创建一个新的类...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,这种模式常被用来解决旧系统与新系统、第三方库或者不同组件之间的接口不匹配问题。适配器模式的核心思想是通过创建一个新的类...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...
1. 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以...因为适配器(PowerAdapter类)与源角色(TwoHole类)是继承关系,所以该适配器模式是类的适配器模式
c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...
设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间进行通信。这种模式可以在不修改现有代码的情况下重用现有类,并且可以使不兼容的接口之间进行通信。 适配器模式的定义 适配器模式是...
适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许两个不兼容的接口之间进行通信。在实际应用中,我们常常遇到这样的情况:一个系统需要使用现有的类,但其接口与系统的需求不匹配。适配器模式能解决这种...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在处理系统集成、遗留代码重用以及不同接口之间兼容性问题时。适配器模式的主要目的是将两个不兼容的接口融合在一起,使得原本无法直接协作...
结构型模式如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy),则关注如何组合和连接类与对象,以达到新的功能。行为型模式如观察者模式(Observer)、策略模式(Strategy)和访问者模式...
适配器模式是一种软件设计模式,它允许不同的接口或类之间进行通信,即使它们的接口不兼容。适配器模式的核心思想是通过创建一个适配器类,将原有类的接口转换为客户期望的接口,从而使得原本无法协作的类能够协同...
在计算机编程中,适配器(Adapter)是一种设计模式,它的作用是使两个不兼容的接口能够协同工作。在这个特定的案例中,codelab-adapter可能是为了使Scratch3与特定的教学平台或设备(如Codelab)进行无缝对接,提供...
Parse5是一个遵循HTML5规范的JavaScript解析器,其设计目标是提供高效、准确且易于使用的API来解析和序列化HTML文档。Parse5的主要特点包括对HTML5标准的严格遵循,支持最新的特性和语法,以及对错误处理的精细控制...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件开发中,我们常常遇到这样的情况:需要使用一个已经存在的类,但是它的接口与我们的需求不匹配,这时候适配器模式就能派上用场。适配器...
在软件设计模式中,Adapter(适配器)模式是一种常用的设计模式,它的主要作用是将两个不兼容的接口之间进行适配,使得原本无法协同工作的类可以一起工作。适配器模式可以分为类适配器模式和对象适配器模式。在这里...
适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口之间能够进行通信。在这个“讲故事,学(Java)设计模式—适配器模式”的主题中,我们将深入探讨这个模式的原理、应用和优势。 适配器模式的核心思想...
适配器模式(Adapter Pattern)是一种结构型设计模式,其主要目的是将一个类的接口变换成客户端所期待的另一种接口。通过这种方式,原本由于接口不兼容而无法一起工作的类可以顺利合作。适配器模式有两种实现方式:...