模板方式模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方式结构图如下:
java代码实现如下:
抽象模板类
1 //抽象摸板类,包括一个已经实现了的方法和一些抽象操作,这些抽象操作会推迟到子类实现 2 abstract class AbstractClass{ 3 public abstract void PrimitiveOperation1(); 4 public abstract void PrimitiveOperation2(); 5 6 public void TemplateMethod(){ 7 //这里可以是执行子类方法前的一些操作,如果是数据库操作,此时可以是获取数据库连接 8 System.out.println("我是模板方法!"); 9 PrimitiveOperation1(); 10 PrimitiveOperation2(); 11 } 12 }
具体实现类,可以有多个
1 //具体子类实现 2 class ConcreteClassA extends AbstractClass{ 3 4 @Override 5 public void PrimitiveOperation1() { 6 System.out.println("具体类A方法1实现"); 7 8 } 9 10 @Override 11 public void PrimitiveOperation2() { 12 System.out.println("具体类A方法2实现"); 13 14 } 15 16 } 17 18 class ConcreteClassB extends AbstractClass{ 19 20 @Override 21 public void PrimitiveOperation1() { 22 System.out.println("具体类B方法1实现"); 23 24 } 25 26 @Override 27 public void PrimitiveOperation2() { 28 System.out.println("具体类B方法2实现"); 29 30 } 31 32 }
客户端代码
1 /** 2 * 模板方式 3 * @author yiRain 4 * 5 */ 6 7 //客户端代码 8 public class TemplateMethodTest { 9 public static void main(String[] args){ 10 AbstractClass classA = new ConcreteClassA(); 11 classA.TemplateMethod(); 12 13 AbstractClass classB = new ConcreteClassB(); 14 classB.TemplateMethod(); 15 16 } 17 18 }
运行结果如下: