返回

前端面试必备知识: JavaScript 设计模式大放送(上)

前端

牢记设计原则:

单一职责模式 (S)

  • 一个类或函数应该只负责一项单一的任务。
  • 这样可以使代码更容易理解和维护。

里式替换原则 (L)

  • 子类应该能够替换其父类,而不会破坏程序的正确性。
  • 这有助于确保代码的可扩展性和可重用性。

开放封闭原则 (O)

  • 软件应该对扩展开放,对修改关闭。
  • 这意味着应该能够在不修改现有代码的情况下添加新功能。

接口隔离原则 (I)

  • 客户端不应该依赖于它不需要的接口。
  • 这有助于减少耦合并提高代码的可维护性。

依赖倒置原则 (D)

  • 高层模块不应该依赖于低层模块。
  • 相反,两者应该通过抽象来耦合。
  • 这有助于提高代码的可测试性和可重用性。

掌握常见设计模式:

工厂模式:

  • 工厂模式是一种创建对象的模式,可以帮助您将对象的创建过程与对象的实际实现分离。
  • 工厂模式的优点是:
      1. 提高代码的灵活性:可以轻松地创建不同类型的对象,而无需修改代码。
      1. 提高代码的可维护性:将对象的创建过程与对象的实际实现分离,使代码更容易理解和维护。
      1. 提高代码的可扩展性:可以轻松地添加新的对象类型,而无需修改代码。

例如,如果您有一个创建汉堡的程序,您可以使用工厂模式来创建不同类型的汉堡,例如:牛肉汉堡、鸡肉汉堡和蔬菜汉堡。
使用工厂模式,您只需要创建一个工厂类,然后就可以使用该工厂类来创建不同类型的汉堡。

// 定义工厂类
class HamburgerFactory {
  createHamburger(type) {
    switch (type) {
      case "beef":
        return new BeefHamburger();
      case "chicken":
        return new ChickenHamburger();
      case "veggie":
        return new VeggieHamburger();
      default:
        throw new Error("Invalid hamburger type");
    }
  }
}

// 定义汉堡类
class Hamburger {
  constructor(type) {
    this.type = type;
  }

  cook() {
    console.log(`Cooking ${this.type} hamburger`);
  }
}

// 定义牛肉汉堡类
class BeefHamburger extends Hamburger {
  constructor() {
    super("beef");
  }
}

// 定义鸡肉汉堡类
class ChickenHamburger extends Hamburger {
  constructor() {
    super("chicken");
  }
}

// 定义蔬菜汉堡类
class VeggieHamburger extends Hamburger {
  constructor() {
    super("veggie");
  }
}

// 使用工厂类创建不同类型的汉堡
const factory = new HamburgerFactory();

const beefHamburger = factory.createHamburger("beef");
beefHamburger.cook(); // Cooking beef hamburger

const chickenHamburger = factory.createHamburger("chicken");
chickenHamburger.cook(); // Cooking chicken hamburger

const veggieHamburger = factory.createHamburger("veggie");
veggieHamburger.cook(); // Cooking veggie hamburger