前端设计模式 | 青训营笔记

86 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 十三 天

设计模式

设计模式就是软件设计中一些常见问题的解决方案模型,常见问题也就是软件设计发展多年以来的历史经验的总结,解决方案模型与特定语言无关,它是一种解决问题的思维模式,不仅仅局限于某一场景或领域。

设计模式背景

设计模式的初次出现是在《模式语言:城镇、建筑、建造(A PatternLanguage: Towns, Buildings, Construction) 1977》这本书中,而在软件领域,则在《设计模式:可复用面向对象软件的基础(Design Patterns: Elements of ReusableObject-Oriented Software) 1994》这本书中主要体现。在高速发展的现在,许多以前的设计模式已经不再适用,而新的设计模式也在不断出现和发展。

设计模式类型

设计模式主要有三种类型:

  1. 创建型-如何创建一个对象
  2. 结构型–如何灵活的将对象组装成较大的结构
  3. 行为型-负责对象间的高效通信和职责划分

浏览器中的设计模式

单例模式

单例模式中存在一个全局唯一访问的对象,在任意地点的访问和修改都会经由这一对象反应到全局。其在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例,避免对资源的多重占用。其主要应用场景在于请求的缓存与全局状态管理。

发布订阅模式

发表订阅模式也称观察者模式,它是一种订阅机制,可在被订阅对象发生变化时通知订阅者。其中订阅者和被订阅者是抽象耦合的,并且建立一套触发机制,在对象之间建立起一种一对多的依赖关系。其应用场景从系统架构之间的解耦,到业务中一些实现模式,像邮件订阅,上线订阅等等,应用广泛。

JS 中的设计模式

原型模式

原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是 JS 中创建对象的基本模式,其利用已有的一个原型对象,快速地生成和原型对象一样的实例,以此来提高项目的性能,并且逃避构造函数的约束。原型模式经常在资源优化、类初始化、对于单一对象的多个访问和修改等应用场景使用。

代理模式

代理模式可自定义控制对原对象的访问方式,并且允许在更新前后做一些额外处理。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口来控制对这一对象的访问。通过代理我们可以避免直接访问可能带来的安全与权限等问题,其扩展了对对象的访问方式,提高了安全性。按职责来划分,通常有以下使用场景: 1、远程代理。 2、虚拟代理。 3、Copy-on-Write 代理。 4、保护(Protect or Access)代理。 5、Cache代理。 6、防火墙(Firewall)代理。 7、同步化(Synchronization)代理。 8、智能引用(Smart Reference)代理。

迭代器模式

迭代器模式是在不暴露数据类型的情况下访问集合中的数据的一种模式,其中的集合指的是数组、对象等数据的集合,在迭代器模式中访问集合不需要知道集合的类型。其应用场景主要在数据结构中有多种数据类型,列表,树等的情况下,方便对集合的访问和遍历,以及提供通用操作接口。