设计模式--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 }
posted @ 2020-06-16 11:01  桃不二  阅读(123)  评论(0编辑  收藏  举报