- 1
- 0
- 约1.91千字
- 约 7页
- 2021-03-08 发布于天津
- 举报
模式定义:
适配器模式将一个类的接口,转换成客户期望的另一个接口。适 配器让原本接口不兼容的类可以合作无间。
适配器可以分为类适配器和对象适配器。
类适配器使用多重继承对一个接口与另一个接口进行匹配。
对象适配器依赖于对象组合。
客户使用适配器的过程:
客户通过目标接口调用适配器的方法对适配器发出请求。
适配器使用被适配者接口把请求转换成被施培者的一个或多个调 用接口
客户接收到调用的结果,但并未察觉这一切是适配器在起转换作 用。
模式结构:
类适配器
Cl ient
+speaficRec^jest()
+request(j
对象适配器
+speaficRequest()
Adapter
举例
(叫声为
现在假设你缺少鸭子对象
不能公然拿来使用
UML设计
用一些火鸡对象(叫声为
distanee)”来冒充。显而易见,因为火鸡的接口 (行为)不同,所以我们
Gobble gob”l飞行输出 ” I m flying a short
Quae飞行输出 ”1 m flying!,想
Client
Target
p 1 n
+request()
Di jck
Turkey
+quaek^
+flyO
+gobble()
+fly()
Adapter
+quack()
编程实现及执行结果:
[cpp] view pla in copy
1.
#in clude iostream
2.
3.
using namespacStd;
4.
//定义鸭子类
5.
class Duck
6.
{
7.
public :
8.
virtual void
quack(){};
9.
virtual void
fly(){};
10.
};
11.
//定义绿头鸭
12.
class MallardDuck :
public Duck
13.
{
14.
public :
15.
void quack()
16.
{
17.
cout
Quack endl;
18.
}
19.
20.
void fly()
21.
{
22.
cout
Im flyi ng endl;
23.
}
24.
};
25.
//定义火鸡
26.
class Turkey
27.
{
28.
public :
29.
virtual void
gobble(){}
30.
virtual void
fiy(){}
31.
};
32.
//定义野火鸡
33.
class WildTurkey :
public Turkey
34.
{
35.
public :
36.
void gobble。
37.
{
38.
cout
Gobble gobble endl;
39.
}
40.
void fly()
41.
{
42.
cout
Im flyi ng a short dista nee
en dl;
43.
}
44.
};
45.
//定义火鸡适配器
46.
class TurkeyAdapter : public Duck
47.
{
48.
public :
49.
TurkeyAdapter(Turkey* tur):turkey(tur){}
50.
51.
void quack()
52.
{
53.
turkey-gobble();
54.
}
55.
void fly()
56.
{
57.
turkey-fly();
58.
}
59.
private :
60.
Turkey* turkey;
61.
};
62.
//客户代码
63.
int main()
64.
{
65.
Duck* duck =
new MallardDuck();
66.
duck-quack();
67.
duck-fly();
68.
69.
Duck* turkeyAdapter = new TurkeyAdapter(iew WildTurkey());
70.
turkeyAdapter-quack();
turkeyAdapter-fly();
return 0;
}
执行结果:
Quack
Imflyi ng
Gobblegobble
Imflyi ng a short dista nee
请按任意键继续...
适配器和装饰者模式比较:
适配器:将一个接口转成另一个接口。包装某些对象,让它们的接口看
起来不像自己而像别的东西。
装饰者:不改变接口,但加入责任。将对象包装起来,让新行为加入类
您可能关注的文档
最近下载
- 国企面试问题及答案-国企面试题目和解答-国企单位面试的题目.docx VIP
- 沈阳工业大学《数据库原理》2025 学年第二学期期末试卷.pdf VIP
- 储能变流器简介及英飞凌IGBT解决方案-TTA2019.pdf VIP
- 房产过户合同8篇.docx VIP
- 大学生心理健康教育 课件全套 总共13章 大学生心理健康与心理咨询 ,心理危机与生命教育等课件.pptx VIP
- 茅台国企面试题目及答案.doc VIP
- X-MINI 杂物梯主板说明书.pdf VIP
- 市政协副主席2025年度民主生活会对照检查材料(五个带头).docx VIP
- 2023年沈阳工业大学计算机科学与技术专业《计算机网络》科目期末试卷B(有答案).docx VIP
- 花式年糕加工机设计【开题报告+文献综述+毕业设计】.Doc VIP
原创力文档

文档评论(0)