首页 > web前端 > js教程 > 正文

高级JavaScript_设计模式实战应用

狼影
发布: 2025-11-25 16:16:02
原创
794人浏览过
单例模式确保类仅有一个实例,如全局状态管理;观察者模式实现对象间一对多通信,用于事件系统;工厂模式通过统一接口创建对象,提升扩展性;装饰器模式动态添加功能而不修改原对象,支持AOP。这些模式共同提升代码的可维护性、解耦性和复用性,是构建健壮JavaScript应用的核心实践。

高级javascript_设计模式实战应用

设计模式是解决常见问题的可复用方案,在高级JavaScript开发中,合理使用设计模式能显著提升代码的可维护性、可扩展性和协作效率。以下是一些在实际项目中广泛应用的设计模式及其具体应用场景。

1. 单例模式(Singleton Pattern)

单例模式确保一个类只有一个实例,并提供全局访问点。适用于管理共享资源,如配置中心、日志记录器或全局状态管理实例。

前端开发中,Vuex或Redux的store通常就是单例。手动实现时可通过闭包和静态属性控制实例化:

class Logger {
  constructor() {
    if (Logger.instance) {
      return Logger.instance;
    }
    this.logs = [];
    Logger.instance = this;
  }

  log(message) {
    this.logs.push(message);
    console.log(`[LOG] ${message}`);
  }
}

const logger1 = new Logger();
const logger2 = new Logger();
console.log(logger1 === logger2); // true
登录后复制

这种模式避免重复创建消耗资源的对象,但需注意测试时难以替换依赖。

立即学习Java免费学习笔记(深入)”;

2. 观察者模式(Observer Pattern)

观察者模式定义对象间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会自动收到通知。常用于事件系统、数据绑定和响应式更新。

Vue.js 的响应式系统底层就基于此模式。简易实现如下:

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

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

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

class Observer {
  update(data) {
    console.log("Received:", data);
  }
}

const subject = new Subject();
const obs1 = new Observer();
const obs2 = new Observer();

subject.subscribe(obs1);
subject.subscribe(obs2);
subject.notify("State changed!"); // 两个观察者都会收到消息
登录后复制

该模式解耦了发布者与订阅者,适合构建松耦合的组件通信机制。

Shoping购物网源码
Shoping购物网源码

该系统采用多层模式开发,这个网站主要展示女装的经营,更易于网站的扩展和后期的维护,同时也根据常用的SQL注入手段做出相应的防御以提高网站的安全性,本网站实现了购物车,产品订单管理,产品展示,等等,后台实现了动态权限的管理,客户管理,订单管理以及商品管理等等,前台页面设计精致,后台便于操作等。实现了无限子类的添加,实现了动态权限的管理,支持一下一个人做的辛苦

Shoping购物网源码 0
查看详情 Shoping购物网源码

3. 工厂模式(Factory Pattern)

工厂模式用于创建对象而无需指定具体类,通过统一接口生成不同类型的实例。适用于需要根据条件动态创建对象的场景,比如表单控件渲染或API响应处理器

例如,根据不同用户角色返回对应的服务实例:

class AdminService {
  performAction() { return "Admin action executed"; }
}

class UserService {
  performAction() { return "User action executed"; }
}

function ServiceFactory(role) {
  switch(role) {
    case 'admin':
      return new AdminService();
    case 'user':
      return new UserService();
    default:
      throw new Error("Invalid role");
  }
}

const service = ServiceFactory('admin');
console.log(service.performAction());
登录后复制

工厂模式将对象创建逻辑集中管理,便于后期扩展新类型而不修改调用代码。

4. 装饰器模式(Decorator Pattern)

装饰器模式允许在不修改原对象的前提下动态添加功能。ES2022已支持装饰器语法,可用于类、方法或属性增强。

常见用途包括日志埋点、权限校验、缓存等:

function log(target, name, descriptor) {
  const original = descriptor.value;
  descriptor.value = function(...args) {
    console.log(`Calling "${name}" with`, args);
    return original.apply(this, args);
  };
  return descriptor;
}

class Calculator {
  @log
  add(a, b) {
    return a + b;
  }
}

const calc = new Calculator();
calc.add(2, 3); // 输出调用信息后再执行
登录后复制

该模式符合开放封闭原则——对扩展开放,对修改封闭,非常适合中间件和AOP编程。

基本上就这些。掌握这些设计模式并结合实际业务灵活运用,能让JavaScript代码更健壮、更易维护。关键不是死记硬背模式名称,而是理解其背后的思想:解耦、复用、可扩展。

以上就是高级JavaScript_设计模式实战应用的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号