news 2026/9/1 14:44:52

前端常用的设计模式有哪些?并说明使用场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端常用的设计模式有哪些?并说明使用场景

/**

  • 前端常用的设计模式有哪些?并说明使用场景

  • 作为前端优秀程序员,必须要懂设计模式

  • javascript设计模式系统讲解与应用

  • 需求指导设计,设计指导开发,这里的设计是指技术方案、组件结构,API,数据结构等的设计

  • 设计原则:

  • 最重要的思想:开放封闭原则

  • 对扩展开放

  • 对修改封闭

  • 设计模式:(一) 工厂模式

  • 1,用一个工厂函数,来创建实例,隐藏new

  • 2,如jQuery $ 函数

  • 3,如 React createElement函数

  • (二)单例模式

  • 1,全局唯一的实例(无法生成第二个)

  • 2,如Vuex Redux的store

  • 3,如全局唯一的dialog modal

  • (三)单例模式 - 扩展

  • 1,JS是单线程的,创建单例很简单

  • 2,Java是支持多线程的,创建单例要考虑锁死线程

  • 3,否则多个线程同时创建,单例就重复了(多线程共享进程内存)

  • (四)代理模式

  • 1,使用者不能直接访问对象,而是访问一个代理层

  • 2,在代理层可以监听get set 做很多事情

  • 3,如ES6 Proxy 实现Vue3响应式

  • proxy可以理解为,在目标对象之前假设一层“拦截”,外界对该对象的访问,都必须先通过

  • 这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。proxy这个词的

  • 原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”

/
// get set 都可以做拦截做处理
var obj = new Proxy ({}, {
get: function (target, propKey, receiver) {
console.log(getting ${propKey}!);
return Reflect.get(target, propKey, receiver);
},
set: function (target, propKey, value, receiver) {
console.log(setting ${propKey});
return Reflect.set(target, propKey, value, receiver)
}
})
/
*

  • (五)观察者模式
  • 一个主题,一个观察者,主体变化之后触发观察者执行
  • btn.addEventListener(‘click’, () => { … })
  • (六)发布订阅
  • 绑定
  • event.on(‘event-key’, () => {
  • 事件1})
  • event.on('‘event-key’, () => {
  • 事件2})
  • 触发执行
  • event.emit(‘event-key’)
  • 温故知新:绑定的事件要记得解除,防内存泄漏
  • function fn1() {事件1}
  • function fn2() {事件2}
  • mounted时绑定
  • event.on(‘event-key’, fn1)
  • event.on(‘event-key’, fn2)
  • beforeUnmount时解绑
  • event.off(‘event-key’, fn1)
  • event.off(‘event-key’, fn2)
  • (七)装饰器模式
  • 1,原功能不变,增加一些新功能(AOP面向切面编程)
  • 2,ES和Typescript的Decorator语法
  • 3,类装饰器,方法装饰器
  • Next.js是构建在Node.js之上的Web应用框架,它依赖Node.js提供运行时支持
  • next.js里面装饰器用法多
  • 答案
  • 工厂模式 单例模式 代理模式
  • 观察者模式 发布订阅模式 装饰器模式
  • 划重点
  • 1,经典设计模式有23个,这是基于后端写的,前端不是都常用
  • 2,要结合应用场景
    */
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 14:44:00

关于化合物2471983-20-5(FAPI)的实验应用与保存规范说明

【试剂简介】中文名:成纤维细胞活化蛋白英文名:FAPICAS号:2471983-20-5分子式:C24H28F2N6O3分子量:486.51结构式:米白色到浅黄色固体结构式:一、作用机制与靶向特性该化合物的核心功能在于其对成…

作者头像 李华
网站建设 2026/7/14 17:25:31

逆向新手之攻防世界--key

查看main函数发现对Block和v34进行两次加密编写解密脚本athemidathemidathemida b>----....<<<<. flag for i in range(0,18,1):flagchr((ord(a[i])^ord(b[i]))229) print(flag)

作者头像 李华
网站建设 2026/7/14 17:25:33

Python 参数

self关键字一、self 是什么&#xff1f;&#xff08;定义&#xff09;self 是 Python 类中实例方法的第一个参数&#xff0c;代表当前正在调用该方法的实例对象本身。注意&#xff1a;self 只是约定俗成的名字&#xff0c;你可以用 this、me 等其他名字代替&#xff0c;但强烈不…

作者头像 李华
网站建设 2026/7/14 17:25:43

使用 Charles 抓取电脑浏览器请求(包括 HTTPS 请求),需完成以下关键配置。

文章目录 引言 一、基础前提 二、抓取 HTTP 请求(无需额外配置) 三、抓取 HTTPS 请求(必须配置证书与 SSL 代理) 四、常见问题排查 引言 本文详细介绍了使用Charles抓取HTTP/HTTPS请求的配置方法。基础前提包括安装Charles和设置浏览器代理。抓取HTTP请求无需额外配置,而…

作者头像 李华
网站建设 2026/7/14 17:25:43

对于【LSTM与GRU在水文预测中的对比分析】的未来改进和建议

主要内容 该博客通过系统对比实验评估了LSTM与GRU在智慧水利水文预测任务中的性能表现。实验基于USGS-05071500站点的连续日流量与水位数据&#xff0c;采用相同的网络架构设计&#xff08;双层64/32隐藏单元&#xff09;&#xff0c;从预测精度、参数效率和训练效率三个维度进…

作者头像 李华