《桥接模式》

桥接模式就是 独立和实现相分离。

不同的厂家生产不同的产品。。。。产品和厂家有这组合的关系。

上代码

[cpp]  view plain copy
  1. // Bridge.cpp : 定义控制台应用程序的入口点。  
  2. //  
  3. /  
  4. //************************************************************************/      
  5. /* @filename    Bridge.cpp 
  6. @author       wallwind   
  7. @createtime    2012/10/24 00:00 
  8. @function     桥接模式 
  9. @email       wochenglin@qq.com   
  10. */      
  11. /************************************************************************/     
  12.   
  13.   
  14. #include "stdafx.h"  
  15.   
  16. #include <iostream>  
  17.   
  18. using namespace std;  
  19.   
  20. class Product  
  21. {  
  22. public:  
  23.     Product(){}  
  24.     virtual ~Product(){}  
  25.       
  26.     virtual void make()=0;  
  27.     virtual void sell()=0;  
  28. };  
  29.   
  30. class ProductA:public Product  
  31. {  
  32. public:  
  33.     ProductA(){}  
  34.     virtual ~ProductA(){}  
  35.   
  36.     virtual void make()  
  37.     {  
  38.         cout<<"ProductA:make()"<<endl;  
  39.     }  
  40.     virtual void sell()  
  41.     {  
  42.         cout<<"ProductA:sell()"<<endl;  
  43.     }  
  44. };  
  45.   
  46. class ProductB:public Product  
  47. {  
  48. public:  
  49.     ProductB(){}  
  50.     virtual ~ProductB(){}  
  51.   
  52.     virtual void make()  
  53.     {  
  54.         cout<<"ProductB:make()"<<endl;  
  55.     }  
  56.     virtual void sell()  
  57.     {  
  58.         cout<<"ProductB:sell()"<<endl;  
  59.     }  
  60. };  
  61.   
  62.   
  63. class Corp  
  64. {  
  65. public:  
  66.     Corp(Product* pro)  
  67.         :m_product(pro)  
  68.     {}  
  69.     virtual ~Corp()  
  70.     {  
  71.         delete m_product;  
  72.     }  
  73.       
  74.     virtual void process()  
  75.     {  
  76.         m_product->make();  
  77.         m_product->sell();  
  78.     }  
  79.   
  80. private:  
  81.     Product *m_product;  
  82. };  
  83.   
  84.   
  85. class CorpA:public Corp  
  86. {  
  87. public:  
  88.     CorpA(Product * pro) :Corp(pro){}  
  89.     virtual ~CorpA(){}  
  90.   
  91.     virtual void process()  
  92.     {  
  93.         cout<<"CorpA():process()"<<endl;  
  94.         Corp::process();  
  95.     }  
  96. };  
  97.   
  98. class CorpB:public Corp  
  99. {  
  100. public:  
  101.     CorpB(Product * pro) :Corp(pro){}  
  102.     virtual ~CorpB(){}  
  103.   
  104.     virtual void process()  
  105.     {  
  106.         cout<<"CorpB:process()"<<endl;  
  107.         Corp::process();  
  108.     }  
  109. };  
  110.   
  111. int _tmain(int argc, _TCHAR* argv[])  
  112. {  
  113.   
  114.     Product* product;  
  115.     product = new ProductA;  
  116.   
  117.     Corp * corp ;  
  118.   
  119.     corp = new CorpA(product);  
  120.     corp ->process();  
  121.   
  122.     cout<<"----------"<<endl;  
  123.   
  124.     product= new ProductB;  
  125.     corp = new CorpB(product);  
  126.   
  127.     corp->process();  
  128.     return 0;  
  129. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值