文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript设计模式的魔法:让你的代码舞动起来

2024-04-02 19:55

关注

1. 单例模式

单例模式确保应用程序中只有一个特定类的实例。它对于共享资源(如数据库连接)或确保在整个应用程序中一致的配置非常有用。例如:

class Database {
  constructor() {
    if (!Database.instance) {
      Database.instance = this;
    }
    return Database.instance;
  }
}

const db = new Database(); // Creates a new instance
const db2 = new Database(); // Returns the existing instance

2. 观察者模式

观察者模式允许对象订阅并对其他对象的事件做出反应。这可以实现松散耦合,因为观察者无需了解被观察对象的内部状态。例如:

class Subject {
  constructor() {
    this.observers = [];
  }

  addObserver(observer) {
    this.observers.push(observer);
  }

  notifyObservers() {
    this.observers.forEach((observer) => observer.update());
  }
}

class Observer {
  constructor(subject) {
    this.subject = subject;
    subject.addObserver(this);
  }

  update() {
    // Respond to changes in the subject
  }
}

3. 工厂模式

工厂模式负责创建对象,同时将创建逻辑与客户端代码分离。这允许您轻松地创建不同类型的对象,而无需修改客户端代码。例如:

class ProductFactory {
  createProduct(type) {
    switch (type) {
      case "A":
        return new ProductA();
      case "B":
        return new ProductB();
      default:
        throw new Error("Invalid product type");
    }
  }
}

const factory = new ProductFactory();
const productA = factory.createProduct("A"); // Creates a ProductA instance
const productB = factory.createProduct("B"); // Creates a ProductB instance

4. 装饰器模式

装饰器模式允许动态地扩展对象的现有行为,而无需修改其原始类。它广泛用于增强或包装对象。例如:

class BaseCar {
  drive() {
    console.log("Driving a base car");
  }
}

class CarWithTurbo extends BaseCar {
  constructor(car) {
    super();
    this.car = car;
  }

  drive() {
    this.car.drive();
    console.log("Driving with turbo boost");
  }
}

const car = new BaseCar();
const carWithTurbo = new CarWithTurbo(car);
carWithTurbo.drive(); // Output: "Driving a base car
Driving with turbo boost"

5. 代理模式

代理模式提供一个替代对象,该对象控制对原始对象的访问。它用于延迟加载、安全控制或其他中介场景。例如:

class ImageProxy {
  constructor(src) {
    this.src = src;
    this.image = null;
  }

  load() {
    if (!this.image) {
      this.image = new Image(this.src);
    }
  }

  draw() {
    this.load();
    this.image.draw();
  }
}

const imageProxy = new ImageProxy("my-image.png");
imageProxy.draw(); // Loads the image and draws it only when needed

结语

JavaScript 设计模式是增强代码质量和提高开发效率的宝贵工具。通过了解和应用这些模式,开发者可以创建更可扩展、更灵活和更容易维护的应用程序。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯