not only javascript, also typescript
设计模式是从许多优秀的软件系统中,总结出的成功的、能够实现可维护性、复用的设计方案,使用这些方案将可以让我们避免做一些重复性的工作
- 单例模式 : 一个类只能构造出唯一实例
- 策略模式 : 根据不同参数命中不同的策略
- 代理模式 : 代理对象和本体对象具有一致的接口
- 装饰者模式 : 在不改变对象自身的基础上,动态地给某个对象添加一些额外的职责
- 组合模式 :
- 组合模式在对象间形成树形结构
- 组合模式中基本对象和组合对象被一致对待
- 无须关心对象有多少层, 调用时只需在根部进行调用
- 工厂模式 : 不暴露创建对象的具体逻辑,而是将逻辑封装在一个函数中,这个函数就可以被视为一个工厂
- 访问者模式 : 在不改变该对象的前提下访问其结构中元素的新方法
- 发布订阅模式 : 订阅者订阅相关主题,发布者通过发布主题事件的方式,通知订阅该主题的对象
- 观察者模式 : 一个对象有一系列依赖于它的观察者(watcher),当对象发生变化时,会通知观察者进行更新
观察者与发布订阅模式的区别
观察者模式和发布-订阅模式之间的区别,在于是否存在第三方、发布者能否直接感知订阅者
- 观察者模式:一个对象有一系列依赖于它的观察者(watcher),当对象发生变化时,会通知观察者进行更新
- 发布订阅模式:订阅者订阅相关主题,发布者通过发布主题事件的方式通知订阅该主题的对象,发布订阅模式中可以基于不同的主题去执行不同的自定义事件。发布者不直接触及到订阅者、而是由统一的第三方来完成实际的通信的操作。
高阶函数的范式:
function HOF0(fn) {
return function(...args) {
return fn.apply(this, args);
}
}