Java 实现模板方法(TemplateMethod)模式
类图
/** * 业务流程模板。提供基本框架 * @author stone * */ public abstract class BaseTemplate { public abstract void part1(); public abstract void part2(); public abstract void part3(); //这里为了严格实验结果,使用final不可被重写 public final void useTemplateMethod() { part1(); part2(); part3(); } }
/** * 模板实现方式1 * @author stone * */ public class TemplateMethod extends BaseTemplate { @Override public void part1() { System.out.println("模板方法1"); } @Override public void part2() { System.out.println("模板方法2"); } @Override public void part3() { System.out.println("模板方法3"); } }
/** * 模板实现方式2 * @author stone * */ public class TemplateMethod2 extends BaseTemplate { @Override public void part1() { System.out.println("模板方法11"); } @Override public void part2() { System.out.println("模板方法22"); } @Override public void part3() { System.out.println("模板方法33"); } }
/** * 模板方法(TemplateMethod)模式:行为型模式,定义了一系列操作的骨架,将模块的实现 延迟到实现类或者子类中实现。 * 跟建造者模式的差别: * 建造者模式。使用组合方式,由指挥者Director指挥组合的Builder建造。建造流程由Director控制。建造的模块方法由Builder实现 * 模板方法模式。由模板定义操作流程,由子类或实现类 实现详细的模块方法 * 综上。建造者模式灵活于模板方法模式 * @author stone * */ public class Test { public static void main(String[] args) { BaseTemplate tm = new TemplateMethod(); tm.useTemplateMethod(); System.out.println(""); BaseTemplate tm2 = new TemplateMethod2(); tm2.useTemplateMethod(); } }
打印
模板方法1 模板方法2 模板方法3 模板方法11 模板方法22 模板方法33