Class diagram
##
/** * 业务流程模板,提供基本框架 * @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
The above is the detailed content of Detailed explanation of how to implement template method (TemplateMethod) pattern in Java. For more information, please follow other related articles on the PHP Chinese website!