设为首页 加入收藏

TOP

C++设计模式实现--模板(Template)模式
2015-07-24 06:11:26 来源: 作者: 【 】 浏览:9
Tags:设计模式 实现 模板 Template 模式

一. 问题

在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template提供了这种情况的一个实现框架。

二. 模式

Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节

\

三. 代码

[cpp] view plaincopy
  1. //抽象基类,实现了一个模板方法
  2. class AbstractClass
  3. {
  4. public:
  5. virtual ~AbstractClass()
  6. {
  7. }
  8. ?
  9. //模板方法,只在抽象基类中实现
  10. void TemplateMethod()
  11. {
  12. this->PrimitiveOperation1();
  13. this->PrimitiveOperation2();
  14. }
  15. ?
  16. protected:
  17. virtual void PrimitiveOperation1() = 0;
  18. ?
  19. virtual void PrimitiveOperation2() = 0;
  20. ?
  21. AbstractClass()
  22. {
  23. }
  24. };
  25. ?
  26. //具体子类,实现操作的特定细节
  27. class ConcreteClass1:public AbstractClass
  28. {
  29. public:
  30. ConcreteClass1()
  31. {
  32. }
  33. ?
  34. ~ConcreteClass1()
  35. {
  36. }
  37. ?
  38. protected:
  39. void PrimitiveOperation1()
  40. {
  41. cout<<"ConcreteClass1...PrimitiveOperation1"< }
  42. ?
  43. void PrimitiveOperation2()
  44. {
  45. cout<<"ConcreteClass1...PrimitiveOperation2"< }
  46. };
  47. ?
  48. //具体子类,实现操作的特定细节
  49. class ConcreteClass2:public AbstractClass
  50. {
  51. public:
  52. ConcreteClass2()
  53. {
  54. }
  55. ?
  56. ~ConcreteClass2()
  57. {
  58. }
  59. ?
  60. protected:
  61. void PrimitiveOperation1()
  62. {
  63. cout<<"ConcreteClass2...PrimitiveOperation1"< }
  64. ?
  65. void PrimitiveOperation2()
  66. {
  67. cout<<"ConcreteClass2...PrimitiveOperation2"< }
  68. };
  69. ?
  70. ?
  71. int main()
  72. {
  73. AbstractClass* p1 = new ConcreteClass1();
  74. AbstractClass* p2 = new ConcreteClass2();
  75. ?
  76. p1->TemplateMethod();
  77. p2->TemplateMethod();
  78. ?
  79. return 0;
  80. } 其关键点就是将通用算法封装在抽象基类中,并将不同的算法细节放到子类中实现。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 10006 数论入门题 下一篇ruby简单的基础 3

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: