/**
前端常用的设计模式有哪些?并说明使用场景
作为前端优秀程序员,必须要懂设计模式
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,要结合应用场景
*/