前端常用的 7 种设计模式有哪些?
时间:2024-02-11 11:05:01 | 来源:网站运营
时间:2024-02-11 11:05:01 来源:网站运营
前端常用的 7 种设计模式有哪些?:设计模式有很多,可以分为几个大类:
1.创建型设计模式
1. 简单工厂模式:由一个工厂对象负责创建某一种产品对象类的实例,主要用来创建同一类的对象
2. 工厂方法模式:通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例
3. 抽象工厂模式:通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责创建某一类产品的实例
4.建造者模式: 将一个复杂对象的构建层与其表示层相互分离,同样的构建过程可采用不同的表示 与工厂模式区别:工厂模式主要是为了创建对象实例或者类簇(抽象工厂),关心的是最终产出(创建)的是什么,不关心你创建的整个过程,所以通过工厂模式得到的都是对象实例或者类簇, 而建造者模式目的是为了创建对象,但它更多关心的是创建这个对象的整个过程,甚至创建对象的每个细节
5. 单例模式:只允许实例化一次的对象类,确保所有对象都访问唯一实例
6. 原型模式:用原型实例指向创建对象的类,使用与创建新的对象的类恭喜原型对象的属性以及方法
2.结构型型设计模式
- 外观模式: 为一组复杂的子系统接口提供一个更高级的统一接口,通过这个接口使得对子系统接口的访问更容易。有时也会用于对底层结构兼容性做统一封装来简化用户使用
2. 代理模式:由于一个对象不能直接引用另一个对象,所以需要通过代理对象在这两个对象之间起到中介的作用
3.桥接模式: 在系统沿着多个维度变化的同时,又不增加其复杂度并已达到解耦 抽象工厂模式和建造者模式主要业务在于创建,而桥接模式实现解耦,使实现层与抽象层分开处理,避免需求的改变早餐对象内部的修改,体现了面向对象对扩展的开放及对修改的关闭原则,这非常有用
4.适配器模式: 将一个类(对象)的接口(方法或者属性)转化成另一个接口以满足用户需求,使类(对象)之间接口的不兼容问题通过适配器得以解决
5. 装饰者模式:在不改变源对象的基础上,通过对其进行包装扩展(添加属性或者方法)使原有对象可以满足用户的更复杂需求, 适配器模式与装饰者模式区别:适配器模式是对原有对象适配,需要了解原有方法实现的具体细节,而装饰者提供的方法与原来的方法功能是有一定区别,不需要知道原有方法实现的具体细节,只有当调用方法时才会知道
6.组合模式: 又称整体模式,将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性
7.亨元模式: 运用共享技术有效的支持大量的细粒度的对象,避免对象间拥有相同内容造成多余的开销
3.行为型设计模式
- 状态模式: 当一个对象的内部状态发生改变时,会导致其行为的改变,这看起来像是改变了对象
- 中介者模式: 通过中介者对象封装一系列对象之间的交互,使对象之间不再相互引用,降低他们之间的耦合,中介者模式中消息的发送方只有一个,就是中介者对象,而且中介者对象不能订阅消息,只有订阅者才可以订阅中介者的消息 而观察者中一个对象既可以是消息的发送者也可以是消息的接收者
- 职责链模式: 解决请求的发送者与请求的接受者之间的耦合,通过职责链上的多个对象对分解请求流程,实现请求在多个对象之间的传递,直到最后一个对象完成请求的处理
- 模板方法模式: 父类中定义一组操作算法的骨架,而将一些实现步骤延迟到子类中,使得子类可以不改变父类的算法结构的同时可重新定义算法中某些实现步骤
- 命令模式: 将请求与实现解耦并封装成独立对象,从而使不同的请求对客户端的实现参数化
- 观察者模式:又被称作发布-订阅者模式或消息机制,定义了一种依赖关系,解决了主题对象与观察者之间功能的耦合,比如vue的响应式也利用了此模式来收集依赖
- 访问者模式: 针对于对象结构中的元素,定义在不改变该对象的前提下访问结构中元素的新方法
- 迭代器模式: 在不暴露对象内部结构的同时,可以顺序的访问聚合对象内部的元素
9. 策略模式:将定义的一组算法封装起来,使其相互之间可以替换,封装的算法具有一定独立性,不会随客户端变化而变化
10.备忘录模式: 在不破坏对象的封装性的前提下,在对象之外捕获并保存该对象内部的状态以便日后对象使用或者对象恢复到以前的某个状态,通过备忘录模式来缓存数据(qiankun 的快照沙箱)
4.技巧型设计模式
- 链模式: 通过在对象方法中将当前对象返回,实现对同一个对象多个方法的链式调用(比如jquery链式调用)
2. 委托模式:多个对象接收并处理同一请求,他们将请求委托给另一个对象统一处理请求
3. 数据访问对象模式: 抽象和封装对数据源的访问与存储,DAO通过对数据源连接的管理方便对数据的访问与存储
4. 节流模式:对重复的业务逻辑进行节流控制,执行最后一次操作并取消其他操作,以提高性能
5.惰性模式: 减少每次代码执行时的重复性的分支判断,通过对对象重定义来屏蔽源对象中的分支判断
6.参与者模式: 在特定的作用域中执行给定的函数,并将参数原封不动的传递
7.等待者模式: 通过对多个异步进程监听,来触发未来发生的动作
5.架构型设计模式
- 同步模块模式: 请求发出后,无论模块是否存在,立即执行后续的逻辑,实现模块开发中对模块的立即引用
- 异步模块模式: 请求发出后,继续其他业务逻辑,知道模块加载完成执行后续的路平级,实现模块开发中对模块加载完成后的引用
以上加粗字体可以认为是比较常见,工作当中对设计模式的合理利用可以达到事半功倍效果,结合实际场景切勿生搬硬套;