模板方法在大多数情况下并不被推荐使用,父类调用子类的方法,通过继承来改变算法的一部分,是面向对象的一种基本认识。
父类可以让未知的子类去做它本身可能完成的不好或者根本完不成的事情。
模板方法,TemplateMethod,只是学习这个模式就会对你产生长远影响的一个模式。
意图
定义一个操作中的算法的顾家,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
结构
定义了1,2,3这几个步骤,在模板方法中按照一定的结构顺序执行这些步骤。父类的方法可以有缺省实现,也可以是一个空实现,即所谓的钩子操作。
结合实际情况,我们来画一下View中draw方法涉及到的几个步骤方法:
学习模板方法对于我们了解框架的基类实现,生命周期和流程控制非常有帮助。