10. 模板方法模式
来源:互联网 发布:淘宝每日好店怎么报名 编辑:程序博客网 时间:2024/05/16 12:05
模板方法模式主要有一下几个要点:
(1)将算法的框架放在父类中,算法的步骤延迟到子类,不同的子类可以对算法的步骤进行不同处理。
(2)算法流程中可以放置一个钩子(hook()),子类可以实现钩子函数,进行条件控制,由子类来控制算法某个步骤是否执行。
eg. sort()中可供用户定义的compare函数。
class AbstractClass{public: void TemplateMethod() final // final:(1)修饰类:防止类的继承。(2)修饰成员函数:防止子类覆盖 { operation1(); operation2(); operation3(); if(hook()) { operation3(); } } virtual void operation1(){//可以由子类实现...}; virtual void operation3(){//可以由子类实现...}; void operation2() final { //具体实现...}; virtual bool hook(){//可以由子类实现}; };class concreteClass : public AbstractClass{public: virtual void operation1(){...}; virtual void operation3(){...}; virtual bool hook(){...};};
模板方法与其他模式的比较:
(1)策略模式:替换算法
(2)工厂方法:子类决定创建哪个对象
设计原则:
抽象类说:不要调用我,我会调用你。避免高层组件和底层组件具有明显环形依赖。
阅读全文
0 0
- 10.模板方法模式
- 10. 模板方法模式
- 深入浅出模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法设计模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- TemplateMethod模板方法模式
- 模板方法模式
- centos基础安装
- Joda-Time 简介
- 反射机制
- java mysql 插入datetime的正确方式(MySQLSyntaxErrorException解决办法)
- erlang 接入远程shell控制台(请重点学习作业JCL模式)
- 10. 模板方法模式
- python xxxA.py 调用 xxxB.py 中的方法
- iOS 快捷键~移动、编辑、选择
- (POJ 1797)Heavy Transportation 最大生成树|最短路变形 (理解最短路核心思想好题)
- 第二章习题答案
- OpenVPN重装后错误
- > 尝试用construct2制作Flappin alien!
- 判断点在任意多边形(包括凹凸边形)内
- FTPrep, 111 Minimum Depth of Binary Tree