定义 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些 步骤。 钩子 钩子是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。要不要挂钩有子类自己决定。 目的: 钩子可以让子类实现算法中的可选部分,或者在钩子对子类的实现并不重要的时候,子类可以对此钩子置之不理。 要点 1、“模板方法”定义了算法的步骤,把这些步骤的实现延迟到子类; 2、模板方法模式为我们提供了一种代码复用的可重要技巧; 3、模板方法的抽象类可以定义具体方法、抽象方法和钩子; 4、抽象方法由子类实现; 5、钩子是一种方法,它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要覆盖它; 6、为了防止子类改变模板算法中的方法,可以用将模板方法声明为final; 7、好莱坞原则告诉我们,将决策权放在高层模块中,以便决定如何以及何时调用底层模块。 实例 CaffeineBeverage.java
Powered by: BlogJava Copyright © sailor