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)
子程序的接口或调用方式与需要使用它的相关对象不完全相同。
相关推荐
c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...
适配器模式 设计模式 Adapter 还请各位大S指教
适配器模式(Adapter Pattern) 是作为两个不兼容接口之间的桥梁, 这种类型的设计模式属于结构型模式。 一些书籍也称适配器模式为缺省适配器模式(Default Adapter Pattern) 。 适配器模式主要分 为三类: 类...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第7节:结构型模式Adapter 适配器模式
java中的适配器模式,Adapter设计模式(包装器)23种设计模式之一
设计模式C++学习之适配器模式(Adapter)
适配器模式是一种结构型设计模式,它允许接口不兼容的两个类可以协同工作。以下是该模式的要点: 1. **角色**: - **Target(目标接口)**:客户端期望调用的接口。 - **Adaptee(适配者)**:现有的、接口与目标...
java设计模式之适配器模式,希望对大家有所帮助。
设计模式之适配器模式(Adapter Pattern) 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
主要为大家详细介绍了Java设计模式之Adapter适配器模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) 体验课程
javascript设计模式之Adapter模式【适配器模式】实现方法示例.docx
Adapter适配器模式在JavaScript设计模式编程中的运用分析_.docx
C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) (Level 300)
C#面向对象设计模式 Adapter 适配器模式 视频讲座下载
走进设计模式之——适配器模式 (Adapter) 对应代码
Head First 设计模式 (七) 适配器模式(Adapter pattern) C++实现
C#设计模式之适配器模式应用实例