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

50 阅读1分钟

介绍

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

主要概念:

  1. AbstractClass: 抽象父类,把一些共用的方法提取出来,把可变的方法作为抽象类, 最重要的是把算法骨架抽象出来为模版方法。
  2. templateMethod: 模版方法,固定了希望执行的算法骨架。
  3. 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();