HeadFirst设计模式学习笔记5-模板模式
来源:互联网 发布:mac jenkins 安装路径 编辑:程序博客网 时间:2024/05/23 16:56
模板方法
模板方法中,有的方法是由超类实现的,有些方法是由子类处理的。需要子类处理的方法需要声明为抽象方法。
模板方法定义了一个算法的框架,框架里面有一些小的步骤,这些步骤既可以在超类中实现,也可以延迟到子类实现。这样使得子类可以在不影响算法结构情况下修改具体实现。
模板方法应声明为final,以防止子类继承时覆盖。
在模板模式中使用钩子
可以使用钩子来影响父类中模板算法的组合顺序。方法是在模板方法中加入if语句,用钩子函数的返回值作为转移条件来控制某算法是否要执行。然后钩子函数提供默认值,可由子类选择是否覆盖父类的钩子函数影响父类模板方法。
钩子方法和抽象方法
当某个方法是子类必须实现的方法时,可以使用抽象方法。如果模板方法中的某步是可选的,需要子类决定其是否使用,可以使用钩子。
好莱坞原则
高层调用底层组件,底层组件不要对高层组件依赖。
应用
一个自然的想法是STL库中的容器。如list,map等,他们内部都有比较算法,但通常你可以指定自己的比较方法供容器排序。
- HeadFirst设计模式学习笔记5-模板模式
- HeadFirst 设计模式学习笔记8--模板方法模式
- HeadFirst 设计模式学习笔记8--模板方法模式
- HeadFirst设计模式学习笔记
- HeadFirst设计模式学习笔记3-单件模式
- HeadFirst设计模式学习笔记7-状态模式
- HeadFirst 设计模式学习笔记5--单例模式
- HeadFirst 设计模式学习笔记5--单例模式
- HeadFirst 设计模式学习笔记5--单例模式
- HeadFirst 设计模式 笔记
- HeadFirst设计模式笔记
- 《HeadFirst 设计模式》学习笔记(一)
- HeadFirst 设计模式学习之模板方法模式
- HeadFirst 设计模式 8模板方法模式
- HeadFirst 设计模式学习笔记1--策略模式
- HeadFirst 设计模式学习笔记2--观察者模式
- HeadFirst 设计模式学习笔记3--装饰模式
- HeadFirst 设计模式学习笔记4--工厂模式
- 最常用的blog,论坛,以及下载开源代码的网站,下载YUV序列的网站
- 比处理编译脚本 for cl 编译器(你懂的)
- DEBUG版正常,RELEASE版崩溃
- 快捷键系统
- ASP.NET MVC框架的7大顶级功能
- HeadFirst设计模式学习笔记5-模板模式
- jdk和jre有什么区别?
- Multiple annotations found at this line: ---关于android string.xml %问题
- 数据结构_查找_静态查找数表_二叉排序树
- 第二章 C语言中的基本知识
- 读取xml文件
- dm365 linux2.6.32内核实现BT656的输入驱动
- 用GDB调试程序
- sqlplus命令的使用大全