[架构设计]设计模式C++实现--适配器模式_第1页
[架构设计]设计模式C++实现--适配器模式_第2页
[架构设计]设计模式C++实现--适配器模式_第3页
[架构设计]设计模式C++实现--适配器模式_第4页
[架构设计]设计模式C++实现--适配器模式_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模式定义: 适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 适配器可以分为类适配器和对象适配器。 类适配器使用多重继承对一个接口与另一个接口进行匹配。 对象适配器依赖于对象组合。客户使用适配器的过程:1.客户通过目标接口调用适配器的方法对适配器发出请求。2.适配器使用被适配者接口把请求转换成被施培者的一个或多个调用接口3.客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。模式结构: 类适配器对象适配器举例:现在假设你缺少鸭子对象(叫声为Quack,飞行输出”Im flying !”),想用一些火鸡对象(叫声为”Gobble gobble” 飞行输出”Im flying a short distance!”)来冒充。显而易见,因为火鸡的接口(行为)不同,所以我们不能公然拿来使用。UML设计:编程实现及执行结果:cppview plaincopy1. #include2. 3. usingnamespacestd;4. /定义鸭子类5. classDuck6. 7. public:8. virtualvoidquack();9. virtualvoidfly();10. ;11. /定义绿头鸭12. classMallardDuck:publicDuck13. 14. public:15. voidquack()16. 17. coutQuackendl;18. 19. 20. voidfly()21. 22. coutImflyingendl;23. 24. ;25. /定义火鸡26. classTurkey27. 28. public:29. virtualvoidgobble()30. virtualvoidfly()31. ;32. /定义野火鸡33. classWildTurkey:publicTurkey34. 35. public:36. voidgobble()37. 38. coutGobblegobbleendl;39. 40. voidfly()41. 42. coutImflyingashortdistancegobble();54. 55. voidfly()56. 57. turkey-fly();58. 59. private:60. Turkey*turkey;61. ;62. /客户代码63. intmain()64. 65. Duck*duck=newMallardDuck();66. duck-quack();67. duck-fly();68. 69. Duck*turkeyAdapter=newTurkeyAdapter(newWildTurkey();70. turkeyAdapter-quack();71. turkeyAdapter-fly();72. return0;73. 执行结果:QuackImflyingGobblegobbleImflying a short distance请按任意键继续. . .适配器和装饰者模式比较:适配器:将一个接口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论