介绍
模版方法模式,父类定义一组操作算法骨架,而将一些实现延迟到子类中, 使得子类可以不改变父类的算法结构的同时,重新定义算法中的某些实现步骤。模版方法模式的关键时算法步骤的骨架和具体实现分离。
主要概念:
- AbstractClass: 抽象父类,把一些共用的方法提取出来,把可变的方法作为抽象类, 最重要的是把算法骨架抽象出来为模版方法。
- templateMethod: 模版方法,固定了希望执行的算法骨架。
- ConcreteClass: 子类,实现抽象父类中定义的抽象方法,调用继承的模版方法时,将执行模版方法中定义的算法流程。
ts 代码
// 抽象父类
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();