稀土 2018-05-06
模板模式和钩子函数
一.什么是模板模式?
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构就能重新定义该算法的某些特定步骤。
二.如何实现模板模式?
public abstract class Hello{ abstract void initialize(); public final void HelloWorld(){ initialize(); if(isDelete()){ System.out.println("删除"); } } /** *钩子函数 */ public boolean isDelete(){ return true; } } public abstract class Game { public void initialize(){ System.out.println("my name is Hello"); } }
三.模板模式的实现要素?
准备一个抽象基类,将部分逻辑以具体方法的形式实现,然后声明一些抽象方法交由子类实现剩余逻辑,用钩子方法给予子类更大的灵活性。最后将方法汇总构成一个不可改变的模板方法。
四.模板模式的应用场景?
算法或操作遵循相似的逻辑,重构时(把相同的代码抽取到父类中),重要,复杂的算法,核心算法设计为模板。
五.模板模式的优点和缺点?
封装性好,复用性好,屏蔽细节,便于维护这几大优点;不同的实现都需要不同的子类,导致类的数量太多。