设计模式介绍
软件中常见问题的解决方案模型
- 历史经验总结
不仅是IT相关专业,工程类的专业都有通过历史经验解决当下问题的情况。
- 与特定语言无关
设计模式是一种思想,一种编码规范,使用于大部分语言。
设计模式背景
- 模式语言:城镇、建筑、建造
建筑学中的设计模式,也是强调一种思想。
- 设计模式:可复用面向对象软件的基础
详细介绍了编码中的23种设计模式,并且具有通用性。
设计模式趋势
图中可以看出,互联网行业的快速发展,需要有设计模式的支撑。
浏览器中的设计模式
单例模式
见名知义,也就是全局唯一访问对象。又成单一职责模式。
我们常用的windows对象就是一个单例模式,单例模式的应用场景有缓存、全局状态管理等。
下面是一个单例模式设计全局缓存的例子:
发布订阅模式
一种订阅机制,可在被订阅对象发生变化时通知订阅者,类似于社交网站的关注通知。
从系统架构的解耦,例如MQ,到业务中的一些实现模式,像邮箱订阅、上线订阅等。
下面是一个用发布订阅模式实现用户上线订阅的例子:
JS中的设计模式
原型模式
复制已有的对象来创建新的对象,例如常把一些对象挂载到prototype上。
也是JS中创建对象的基本模式,是一种JS自带的设计模式。
下面是一个用原型模式创建上线订阅中用户的例子:
代理模式
可自定义控制对原对象的访问方式,并允许在更新前后做一些额外处理。代理模式在其他语言中也很常用,例如JAVA中的
AOP,它的作用就是对原先访问方式进行功能增强。
应用场景有:监控,代理工具,前端框架实现等。
下面是一个用代理模式实现用户状态订阅的例子:
迭代器模式
在不暴露数据类型的情况下访问集合中的数据,在设计某种
数据结构时可运用该思想。
下面是一个设计可迭代组件类的例子:
前端框架中的设计模式
代理模式
以Vue前端框架为例,前端框架中对DOM操作的代理。
组合模式
可多个对象组合使用,也可单个对象独立使用。
应用场景有:DOM、前端组件、文件目录、部门等。
下面以React组件结构为例: