说明:该文章是个人学习后的提炼和归纳总结,具有不完善性和一定错误见解。有错误和理解不对的地方,请大家多多指出来,如要学习设计模式,建议网上查找相相关完整资料或者看书。
一般来说:有24种常用设计模式。那什么是设计模式呢?设计模式就是前人在开发经验中,对一些常见套路的总结归纳。是一种编程思想的提现。对指导我们现在的代码规范和解题思路是很有指导性意义的。
那都有哪些设计模式呢:构造器模式,模块模式,单例,观察者,中介者,原型,命令,外观,工厂,Mixin混入,装饰者,享元,适配器,组合等····
首先对设计模式的使用场景做一个分类。
1:对某些方法的封装,平常公共方法库等,都可以采用如下设计模式。
a,外观模式:就是把一个很复杂的方法,通过一个简单的API包装起来,这就叫外观模式。如:canves压缩图片的封装,拖拽事件的封装。
b,适配器模式:顾名思义,就是把具有相同功能,但是使用方法不同的API封装起来,统一输出一个使用方法。如:ajax的封装,存在兼容性问题的封装
c,组合模式:把多个相同方法,用一个API封装起来,统一调用。
d,单例模式:限制只能实例化一个对象,防止多个实例被注册,写组件时比较常用。
e,装饰者模式:就是一个构造函数,一个实例对象,重写实例对象上的一些方法,这个过程就叫装饰。
2:开始做项目时,全局设计API时使用,管理数据
a,享元模式:就是数据尽可能的共享同一个地址。
b,命令模式:保护局部的状态,使只能通过特定的方法来访问该状态。如:redux中有类似实现,vuex不属于此实现,因为vuex可以自己更改state。
c,观察者模式,也可以叫发布订阅模式,极为相似的2种设计模式。就是一个方法添加监听函数,一个方法触发所监听的函数。如:redux中 subscribe()方法就是发布订阅的实现。
3:适合UI组件使用的设计模式。
a,工厂模式:适合用来编写基础组件,就是公共组件UI的基础封装。
b,混合模式:把全局方法绑定到需要的实例上面去。