news 2026/6/9 20:54:30

常见的设计模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
常见的设计模式

1. 事件发射器

是一种 发布-订阅 (publish,subcription) 模型的实现

事件中心、事件发射器

本质是Map存储 事件名→回调函数集合

这样彼此都不知道对方存在,都是被 事件中心 单向关联,实现解耦

{ "data": [fn1, fn2], "click": [fnA], "error": [fnX, fnY, fnZ] }

on 注册:将函数放入集合

emit 遍历集合,依次执行回调

emit(eventName, payload) { for (const fn of listeners[eventName]) { fn(payload); } }

截图工具多语言中的事件发射器

2. 观察者模式

被观察者状态变化时通知所有观察者,触发update

之间通过 subjects 通信,需要维护观察者列表并实现 广播,即调用观察者的 update 回调,所以解耦合得并不是很彻底

// 被观察者:维护状态 + 维护观察者 class Subject { constructor() { this.observers = []; this.state = null; } setState(value) { this.state = value; this.notify(value); } addObserver(observer) { this.observers.push(observer); } removeObserver(observer) { this.observers = this.observers.filter(o => o !== observer); } notify(value) { this.observers.forEach(observer => observer.update(value)); } } // 观察者:需要有 update 方法 class Observer { update(value) { console.log("收到更新:", value); } } // 使用 const subject = new Subject(); const obs1 = new Observer(); const obs2 = new Observer(); subject.addObserver(obs1); subject.addObserver(obs2); subject.setState(123); // 输出:两次 “收到更新:123”

还有例如 useForm 中对表单状态 _formState 更新后通知相关组件的实现就是内部维护了一个观察者subjects

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 12:14:58

1、全面解析Java 2认证考试:备考指南与实用建议

全面解析Java 2认证考试:备考指南与实用建议 1. Java 2 版本更新及认证考试变革 Java 2 平台 5.0 版本(开发代号“Tiger”)的发布是一个重大里程碑。这个版本促使开发者编写更简洁的 Java 代码,不过也要求大家做出思维上的调整。例如需要熟悉新的语法结构,像枚举类型 e…

作者头像 李华
网站建设 2026/6/9 16:11:03

4、Java修饰符全解析:掌握代码访问与特性控制

Java修饰符全解析:掌握代码访问与特性控制 在Java编程中,修饰符是控制类、变量和方法行为的重要工具。它们可以规定访问权限、限制修改、定义抽象性等。本文将深入探讨Java中各类修饰符的作用和使用方法。 1. 修饰符概述 修饰符是Java关键字,为编译器提供代码、数据或类的…

作者头像 李华
网站建设 2026/6/8 7:05:32

6、Java 中的流程控制、断言和异常处理

Java 中的流程控制、断言和异常处理 1. 引言 编程的核心在于让程序在正确的时间执行到正确的位置。Java 提供了多种传统的流程控制特性,如循环、条件语句和开关语句,同时还支持异常和断言这两种现代的流程控制结构。此外,Java 还增强了 for 循环的语法,使其与集合的集成更…

作者头像 李华
网站建设 2026/6/6 16:42:37

7、Java面向对象编程:概念、实现与应用

Java面向对象编程:概念、实现与应用 1. 面向对象编程概述 在Java编程中,理解面向对象(OO)范式至关重要。许多程序员虽知晓面向对象编程的好处,但在实际开发中,常编写包含过程式和面向对象代码的混合应用,未能充分发挥面向对象编程的优势。 1.1 面向对象编程的好处 面…

作者头像 李华
网站建设 2026/6/6 16:19:37

14、Java 网络编程:对象流与远程方法调用

Java 网络编程:对象流与远程方法调用 在 Java 网络编程中,客户端与服务器之间的通信是一个重要的话题。本文将详细介绍两种常见的通信方式:对象流(Object Streams)和远程方法调用(Remote Method Invocation,RMI)。 1. 套接字和流的基础 在 Java 网络编程中,大多数程…

作者头像 李华