一、介绍
模板方法(Template Method)模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。
当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。
二、代码实现
//模板方法抽象类 public abstract class AbstractClass { //模板方法 public void templateMethod() { //子类可以共享的代码 this.primitiveOperation1(); this.primitiveOperation2(); } public abstract void primitiveOperation2(); public abstract void primitiveOperation1(); } public class ConcrateClassA extends AbstractClass{ @Override public void primitiveOperation2() { System.out.println("实现A2"); } @Override public void primitiveOperation1() { System.out.println("实现A1"); } } public class ConcrateClassB extends AbstractClass { @Override public void primitiveOperation2() { System.out.println("实现B2"); } @Override public void primitiveOperation1() { System.out.println("实现B1"); } }