模板方法
2015-09-20 10:09
176 查看
模板方法的定义:
在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
下面是UML图,
使用的场景:
在android中,我们进行自定义view的使用,必须重写view的 OnMeasure, OnLayout,OnDraw三个方法,这个就是使用了模板方法设计模式。
在java中,java提供的排序算法,你必须实现 compareTo()方法,实际上这也是模板方法的设计模式,因为太常见了,我们很少去问为什么,提醒的是,在java 6一下的版本中,使用mergerSort也就是归并方法进行排序,在java 8中则使用的是TimSort排序,所以在实际中注意兼容性。
其次,关于“钩子”的问题,虽然在模板中定义好了步骤,但是在实际中,有些步骤可以不使用,或者在一定的条件下触发使用,这个时候,需要考虑使用钩子,钩子就是针对这种情况下产生的。
在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
下面是UML图,
使用的场景:
在android中,我们进行自定义view的使用,必须重写view的 OnMeasure, OnLayout,OnDraw三个方法,这个就是使用了模板方法设计模式。
在java中,java提供的排序算法,你必须实现 compareTo()方法,实际上这也是模板方法的设计模式,因为太常见了,我们很少去问为什么,提醒的是,在java 6一下的版本中,使用mergerSort也就是归并方法进行排序,在java 8中则使用的是TimSort排序,所以在实际中注意兼容性。
其次,关于“钩子”的问题,虽然在模板中定义好了步骤,但是在实际中,有些步骤可以不使用,或者在一定的条件下触发使用,这个时候,需要考虑使用钩子,钩子就是针对这种情况下产生的。
相关文章推荐
- mongodb的常用 操作
- 项目调试
- Genymotion出现virtualbox cannot start the virtual device错误
- java里的继承与多态
- C/C++里面const的用法
- hdu5442 Favorite Donut(后缀数组求正逆序中字典序最大的字符串)
- 递归法判断一个数组为递增
- listview分页加载的实现
- spring技术内幕之spring aop的实现
- J-Link GDB Server Command
- C++中类的构造函数调用顺序
- centos5.x编译安装apache 手记
- 放空自己
- POJ 2456 Aggressive cows(二分)
- 关于Objective-C的内存管理图解
- 问题总结
- tarjan算法
- 每天至少保证4个小时的学习时间
- 网页制作中的技巧
- Java实现的各种排序算法