设计模式C++实现(10)——桥接模式


分类: 设计模式

       软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍桥接模式的实现。

       [DP]书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。考虑装操作系统,有多种配置的计算机,同样也有多款操作系统。如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展,减少它们的耦合度。当然了,两者之间有标准的接口。这样设计,不论是对于计算机,还是操作系统都是非常有利的。下面给出这种设计的UML图,其实就是桥接模式的UML图。

         给出C++的一种实现:

  1. //操作系统  
  2. class OS  
  3. {  
  4. public:  
  5.     virtual void InstallOS_Imp() {}  
  6. };  
  7. class WindowOS: public OS  
  8. {  
  9. public:  
  10.     void InstallOS_Imp() { cout<<"安装Window操作系统"<<endl; }   
  11. };  
  12. class LinuxOS: public OS  
  13. {  
  14. public:  
  15.     void InstallOS_Imp() { cout<<"安装Linux操作系统"<<endl; }   
  16. };  
  17. class UnixOS: public OS  
  18. {  
  19. public:  
  20.     void InstallOS_Imp() { cout<<"安装Unix操作系统"<<endl; }   
  21. };  
  22. //计算机  
  23. class Computer  
  24. {  
  25. public:  
  26.     virtual void InstallOS(OS *os) {}  
  27. };  
  28. class DellComputer: public Computer  
  29. {  
  30. public:  
  31.     void InstallOS(OS *os) { os->InstallOS_Imp(); }  
  32. };  
  33. class AppleComputer: public Computer  
  34. {  
  35. public:  
  36.     void InstallOS(OS *os) { os->InstallOS_Imp(); }  
  37. };  
  38. class HPComputer: public Computer  
  39. {  
  40. public:  
  41.     void InstallOS(OS *os) { os->InstallOS_Imp(); }  
  42. };  

        客户使用方式:

  1. int main()  
  2. {  
  3.     OS *os1 = new WindowOS();  
  4.     OS *os2 = new LinuxOS();  
  5.     Computer *computer1 = new AppleComputer();  
  6.     computer1->InstallOS(os1);  
  7.     computer1->InstallOS(os2);  
  8. }  

       本人享有博客文章的版权,转载请标明出处 http://blog.csdn.net/wuzhekai1985

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值