设计模式-模板模式

发布于 — 2019 年 10 月 14 日
#design

模版模式主要用来解决复用和扩展两个问题

模版模式在一个方法中定义一个算法骨架, 并将某些步骤推迟到子类中实现. 模版方法模式可以让子类在不改变算法整体结构的情况下, 重新定义算法中的某些步骤.

在Java中, 可以理解为abstract抽象类, 在父类中定义一个方法, 这个方法中的某一步需要子类去实现.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public abstract class AbstractClass {
  public final void templateMethod() {
    //...
    method1();
    //...
    method2();
    //...
  }
  
  protected abstract void method1();
  protected abstract void method2();
}

public class ConcreteClass1 extends AbstractClass {
  @Override
  protected void method1() {
    //...
  }
  
  @Override
  protected void method2() {
    //...
  }
}

public class ConcreteClass2 extends AbstractClass {
  @Override
  protected void method1() {
    //...
  }
  
  @Override
  protected void method2() {
    //...
  }
}

AbstractClass demo = ConcreteClass1();
demo.templateMethod();