设计模式--Template Method(模板方法)
> 类别:组件协作(晚绑定)
>场景:整体结构稳定,但是子步骤有很多改变
> 模式定义:
-
定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。
>例:
1 public abstract class AbsClass{ 2 //基本方法 3 protected abstract void doSomething(); 4 5 6 protected abstract void doAnything(); 7 8 9 //模板方法 10 public void templateMethod() { 11 //调用基本方法,完成相关逻辑 12 this.doAnything(); 13 this.doSomething(); 14 } 15 } 16 ------ 17 public class ImplAbs222 extends AbsClass { 18 19 protected ImplAbs222(String num) { 20 super(num); 21 } 22 23 @Override 24 protected void doSomething() { 25 System.out.println("-----something"+num+"-----"); 26 } 27 28 @Override 29 protected void doAnything() { 30 System.out.println("-------anything"+num+"---------"); 31 } 32 } 33 ------ 34 public class ImplAbsClass extends AbsClass{ 35 36 protected ImplAbsClass(String num) { 37 super(num); 38 } 39 40 @Override 41 protected void doSomething() { 42 System.out.println("----doSomething"+num+"-----"); 43 } 44 45 @Override 46 protected void doAnything() { 47 System.out.println("-------doAnything"+num+"------"); 48 } 49 } 50 ------ 51 public class AbsTest { 52 public static void main(String[] args) { 53 ImplAbsClass implAbsClass = new ImplAbsClass("111"); 54 ImplAbs222 implAbs222 = new ImplAbs222("222"); 55 implAbs222.templateMethod(); 56 implAbsClass.templateMethod(); 57 } 58 }