返回
前端面试必备知识: JavaScript 设计模式大放送(上)
前端
2023-10-11 16:54:28
牢记设计原则:
单一职责模式 (S) :
- 一个类或函数应该只负责一项单一的任务。
- 这样可以使代码更容易理解和维护。
里式替换原则 (L) :
- 子类应该能够替换其父类,而不会破坏程序的正确性。
- 这有助于确保代码的可扩展性和可重用性。
开放封闭原则 (O) :
- 软件应该对扩展开放,对修改关闭。
- 这意味着应该能够在不修改现有代码的情况下添加新功能。
接口隔离原则 (I) :
- 客户端不应该依赖于它不需要的接口。
- 这有助于减少耦合并提高代码的可维护性。
依赖倒置原则 (D) :
- 高层模块不应该依赖于低层模块。
- 相反,两者应该通过抽象来耦合。
- 这有助于提高代码的可测试性和可重用性。
掌握常见设计模式:
工厂模式:
- 工厂模式是一种创建对象的模式,可以帮助您将对象的创建过程与对象的实际实现分离。
- 工厂模式的优点是:
-
- 提高代码的灵活性:可以轻松地创建不同类型的对象,而无需修改代码。
-
- 提高代码的可维护性:将对象的创建过程与对象的实际实现分离,使代码更容易理解和维护。
-
- 提高代码的可扩展性:可以轻松地添加新的对象类型,而无需修改代码。
-
例如,如果您有一个创建汉堡的程序,您可以使用工厂模式来创建不同类型的汉堡,例如:牛肉汉堡、鸡肉汉堡和蔬菜汉堡。
使用工厂模式,您只需要创建一个工厂类,然后就可以使用该工厂类来创建不同类型的汉堡。
// 定义工厂类
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