[架构设计]设计模式C++实现--适配器模式.doc

[架构设计]设计模式C++实现--适配器模式.doc

ID:54861817

大小:304.72 KB

页数:5页

时间:2020-04-22

[架构设计]设计模式C++实现--适配器模式.doc_第1页
[架构设计]设计模式C++实现--适配器模式.doc_第2页
[架构设计]设计模式C++实现--适配器模式.doc_第3页
[架构设计]设计模式C++实现--适配器模式.doc_第4页
[架构设计]设计模式C++实现--适配器模式.doc_第5页
资源描述:

《[架构设计]设计模式C++实现--适配器模式.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、模式定义:     适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。    适配器可以分为类适配器和对象适配器。    类适配器使用多重继承对一个接口与另一个接口进行匹配。    对象适配器依赖于对象组合。 客户使用适配器的过程:1.      客户通过目标接口调用适配器的方法对适配器发出请求。2.      适配器使用被适配者接口把请求转换成被施培者的一个或多个调用接口3.      客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。模式结构:    类适配器对象适配器举例:现在假设你缺少鸭

2、子对象(叫声为Quack,飞行输出”I’mflying!”),想用一些火鸡对象(叫声为”Gobblegobble”飞行输出”I’mflyingashortdistance!”)来冒充。显而易见,因为火鸡的接口(行为)不同,所以我们不能公然拿来使用。UML设计:编程实现及执行结果:[cpp] viewplaincopy1.#include   2.  3.using namespace std;  4.//定义鸭子类  5.class Duck  6.{  7.public:  8.    virtual void quack()

3、{};  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 << "I'm flying" << endl;  23.    }  24.}; 

4、 25.//定义火鸡  26.class Turkey  1.{  2.public:  3.    virtual void gobble(){}  4.    virtual void fly(){}  5.};  6.//定义野火鸡  7.class WildTurkey : public Turkey  8.{  9.public:  10.    void gobble()  11.    {  12.        cout << "Gobble gobble" << endl;  13.    }  14.    void fly()

5、  15.    {  16.        cout << "I'm flying a short distance" << endl;  17.    }  18.};  19.//定义火鸡适配器  20.class TurkeyAdapter : public Duck  21.{  22.public:  23.    TurkeyAdapter(Turkey* tur):turkey(tur){}  24.  25.    void quack()  26.    {  27.        turkey->gobble();  28. 

6、   }  29.    void fly()  30.    {  31.        turkey->fly();  32.    }  33.private:  34.    Turkey* turkey;    35.};  36.//客户代码  37.int main()  38.{  39.    Duck* duck = new MallardDuck();  40.    duck->quack();  41.    duck->fly();  42.  43.    Duck* turkeyAdapter = new Turke

7、yAdapter(new WildTurkey());  44.    turkeyAdapter->quack();  1.    turkeyAdapter->fly();  2.    return 0;  3.}  执行结果:QuackI'mflyingGobblegobbleI'mflyingashortdistance请按任意键继续... 适配器和装饰者模式比较:适配器:将一个接口转成另一个接口。包装某些对象,让它们的接口看起来不像自己而像别的东西。装饰者:不改变接口,但加入责任。将对象包装起来,让新行为加入类中。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。