单例模式
- 以对象字面量创建对象
let timeTool = {
name: '处理时间工具库',
getISODate: function() {},
getUTCDate: function() {}
}
- ES6中的单例模式
es6 export出实例即是单例
用于创建全局唯一的对象,例如全局状态管理器、全局配置对象等。
工厂模式
- 简单工厂模式
- 工厂方法模式
定义一个创建对象的接口,但由子类决定实例化哪个类。
用于创建不同类型的对象,例如创建不同类型的组件、创建不同类型的数据请求等。
- 抽象工厂模式
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
用于创建一系列相关或相互依赖的对象,例如创建一组相互关联的UI组件。
建造者模式
将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。
用于构建复杂对象,例如构建复杂的表单、构建复杂的图表等。
适配器模式
将一个类的接口转换成客户希望的另外一个接口。
用于将一个类的接口转换成另一个类的接口,例如将不同数据源返回的数据格式统一成统一格式。
代理模式
用于控制对某个对象的访问。
例如对某个重要操作进行权限控制。
装饰器模式
动态地给一个对象添加一些额外的职责。
用于动态地给一个对象添加额外的职责,例如给某个组件添加日志记录功能。
模板方法模式
定义一个操作中的算法骨架,而将一些步骤延迟到子类中实现。
用于定义一个算法骨架,而将一些步骤延迟到子类中实现,例如封装通用的数据请求流程。(axios二次封装)
外观模式
为子系统中的一组接口提供一个统一的接口。
用于为子系统提供一个简化接口,例如封装复杂UI库提供简单易用的API。
组合模式
将对象组合成树形结构以表示“部分-整体”的层次结构。
用于将对象组合成树形结构,例如构建复杂的导航菜单。
观察者模式
定义了对象之间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。
例如实现事件监听、数据更新通知等。
责任链模式
用于解耦请求发送者和接收者之间的关系,例如处理表单验证、处理请求拦截等。
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,用于保存和恢复对象状态。
例如保存用户输入内容以便恢复。