编程规则:DRY = Don't Repeat Yourself
Defination: Define the skeleton of an algorithm in an operation, defering some steps to subclasses. Template Method let subclasses redefine certain steps of an algorithm without changinge the algorithm's structure.
定义:定义一个操作中的算法框架,把一些步骤推迟到子类里实现。模板方法模式让子类在不需要修改算法结构的情况而重新定义特定步骤。
一、使用继承实现模板方法模式
父类提供算法的框架,控制执行流程,而子类不能改变算法的流程,子类方法的调用有父类模板方法确定。父类可以把那些重要的、不允许改变的方法屏蔽,不让子类去重写。
二、引入回调实现模板方法模式
用继承实现的模板会导致子类泛滥的后果。回调表示一段可执行逻辑的引用,我们把该引用传递给另一端逻辑里供这段逻辑适时的使用。
总结:
模板方法模式可以解决某些场合的代码冗余问题,但是也可能引入子类泛滥的问题。虽然引入了回调方法,但是如果回调实现的接口过多,代码较为复杂,这些代码拥挤在一起回引起阅读困难的问题。