模板方法模式(Template Method):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。该模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
使用场景:
1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现;
2、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。即“重分解以一般化”,首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码;
3、控制子类扩展。模板方法只在特定点调用“Hook Method(钩子方法)”操作,这样就只允许在这些点进行扩展。
public abstract class AbstractHook { public abstract boolean isTrue(); // 定义一个方法骨架 public final void operating() { if (isTrue()) { System.out.println("系统已开启"); } else { System.out.println("系统已关闭"); } } } class Hook extends AbstractHook { @Override public boolean isTrue() { return true; } }