《模板方法模式》

这个模式就是利用了面向对象的多态,抽象哪些公用的方法,就不用实现了,其他的按照业务逻辑来独自实现。

等到调用就ok了

 

今天只能上代码了

[cpp]  view plain copy
  1. // TemplateMethod.cpp : 定义控制台应用程序的入口点。  
  2. //  
  3. //************************************************************************/      
  4. /* @filename    TemplateMethod.cpp 
  5. @author       wallwind   
  6. @createtime    2012/10/22 23:30 
  7. @function     模板方法模式   
  8. @email       wochenglin@qq.com   
  9. */      
  10. /************************************************************************/     
  11.   
  12.   
  13. #include "stdafx.h"  
  14. #include <iostream>  
  15.   
  16. using namespace std;  
  17.   
  18.   
  19. class FuncBase  
  20. {  
  21. public:  
  22.     FuncBase(){}  
  23.     virtual ~FuncBase(){}  
  24.   
  25.   
  26.     virtual void doOneStep()=0;  
  27.     //virtual void doTwoStep()=0;  
  28.     virtual void doThreeStep()=0;  
  29.   
  30.   
  31.     void process()  
  32.     {  
  33.         doOneStep();  
  34.         //doTwoStep();  
  35.   
  36.         if (m_hook)  
  37.         {  
  38.             doThreeStep();    
  39.         }  
  40.     }  
  41.   
  42.     void setHook(bool hook)  
  43.     {  
  44.         m_hook =hook;  
  45.     }  
  46.   
  47. private:  
  48.     bool m_hook;  
  49. };  
  50.   
  51. class FuncBussOne :public FuncBase  
  52. {  
  53. public:  
  54.     FuncBussOne(){}  
  55.      ~FuncBussOne(){}  
  56.   
  57.     virtual void doOneStep()  
  58.     {  
  59.         cout<<"FuncBussOne:doOneStep"<<endl;  
  60.     }  
  61.   
  62.     //virtual void doTowStep()  
  63.     //{  
  64.     //  cout<<"FuncBussOne:doTowStep"<<endl;  
  65.     //}  
  66.   
  67.     virtual void doThreeStep()  
  68.     {  
  69.         cout<<"FuncBussOne:doThreeStep"<<endl;  
  70.     }  
  71.   
  72. };  
  73.   
  74.   
  75. class FuncBussTwo :public FuncBase  
  76. {  
  77. public:  
  78.     FuncBussTwo(){}  
  79.     virtual ~FuncBussTwo(){}  
  80.   
  81.     virtual void doOneStep()  
  82.     {  
  83.         cout<<"FuncBussTwo:doOneStep"<<endl;  
  84.     }  
  85.   
  86.     //virtual void doTowStep()  
  87.     //{  
  88.     //  cout<<"FuncBussTwo:doTowStep"<<endl;  
  89. //  }  
  90.   
  91.     virtual void doThreeStep()  
  92.     {  
  93.         cout<<"FuncBussTwo:doThreeStep"<<endl;  
  94.     }  
  95.   
  96. };  
  97. int _tmain(int argc, _TCHAR* argv[])  
  98. {  
  99.   
  100.     FuncBase * f;  
  101.     f= new FuncBussOne;  
  102.     f->setHook(true);  
  103.     f->process();  
  104.     cout<<"---------"<<endl;  
  105.     f=new FuncBussTwo;  
  106.     f->setHook(false);  
  107.     f->process();  
  108.   
  109.     delete f;  
  110.   
  111.     return 0;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值