白筱汐

想都是问题,做都是答案

0%

JavaScript设计模式——模版方法模式

介绍

模版方法模式,父类定义一组操作算法骨架,而将一些实现延迟到子类中, 使得子类可以不改变父类的算法结构的同时,重新定义算法中的某些实现步骤。模版方法模式的关键时算法步骤的骨架和具体实现分离。

主要概念:

  1. AbstractClass: 抽象父类,把一些共用的方法提取出来,把可变的方法作为抽象类, 最重要的是把算法骨架抽象出来为模版方法。
  2. templateMethod: 模版方法,固定了希望执行的算法骨架。
  3. ConcreteClass: 子类,实现抽象父类中定义的抽象方法,调用继承的模版方法时,将执行模版方法中定义的算法流程。

ts 代码

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
// 抽象父类
abstract class AbstractClass {
// 公共方法
operation1() {
console.log('operation1');
}

// 抽象方法
abstract operation2(): void;

// 模版方法
templatedMethod() {
this.operation1();
this.operation2();
}
}

// 子类
class ConcreteClass extends AbstractClass {
operation2() {
console.log('operation2');
}
}

const instance = new ConcreteClass();
instance.templatedMethod();