跳到主要内容

简述Javascript 模板方法模式 ?

参考答案:

模板方法模式是一种行为设计模式,它在一个方法中定义了一个算法的骨架,允许子类在不改变算法结构的情况下重定义某些步骤的具体内容。

在 JavaScript 中,模板方法模式可以通过创建一个抽象类来实现,该类定义了一些抽象方法(由子类实现)和一个模板方法(定义了算法的总体步骤,并调用抽象方法)。子类通过继承抽象类并实现抽象方法来提供具体实现。

下面是一个简单的 JavaScript 模板方法模式的示例:

// 抽象类
class AbstractClass {
  // 抽象方法,由子类实现
  abstract step1();
  
  abstract step2();
  
  // 模板方法,定义了算法的总体步骤
  templateMethod() {
    console.log("开始执行算法");
    this.step1();
    this.step2();
    console.log("算法执行完毕");
  }
}

// 子类
class SubClass extends AbstractClass {
  // 实现抽象方法
  step1() {
    console.log("执行步骤1");
  }
  
  step2() {
    console.log("执行步骤2");
  }
}

// 使用模板方法
const subClassInstance = new SubClass();
subClassInstance.templateMethod();

在上面的示例中,AbstractClass 是一个抽象类,它定义了两个抽象方法 step1step2,以及一个模板方法 templateMethodSubClassAbstractClass 的子类,它实现了 step1step2 方法。

当我们调用 subClassInstance.templateMethod() 时,它会按照 templateMethod 中定义的算法步骤执行,首先调用 step1,然后调用 step2

这种模式的优点是可以确保算法的结构不变,同时允许子类灵活地提供具体实现。这有助于实现代码的复用和扩展性。