做计划时方法论很重要,当要计划写代码时,可以想想是否符合已有的设计模式呢。我通过思考自己多年的项目经历,总结下用到(可能用到)的设计模式。增强自己后面的方法论套用,同时也分享下自己的经验。在网上找了篇《十四种常用设计模式》. 感觉有用的就拿过来分析下。分析如下:
- 工厂模式
提供一个工厂方法,创建对象,可以在工厂方法体里,给对象添加默认属性和方法,减少重复代码。 - 装饰者模式
没啥运用。promise对象直接可以通过then拼接promise,不知道算不算这种模式。 - 代理模式
需要有个抽象接口,定义需要代理的方法。代理者实现这个接口,并作为成员变量的形式保存在被代理者的内部。被代理者需要调用代理的方式,就去调用代理者的方法。
iOS开发里的创建TableView就用到了代理模式,列表的长度和列表项的内容都是代理者提供的。vue render方法应该是代理模式,代理了创建虚拟节点的任务。 - 适配器模式( Adapter )
比如我有个需求:在小程序里获取一张图片的主颜色。刚好网上有个开源js库,能获取指定图片的主颜色。但是用到了canvas。小程序里的canvas和h5的canvas使用方式不一样,那么就可以封装个模块或者方法,通过小程序的canvas获取到图片数据,传给开源js库,获取主颜色。这样就能在小程序环境下使用了。 - 观察者模式
vue的响应式数据就用了观察者模式。一些观察者(watcher)观察着数据一一对应的依赖(dep),数据变化通知依赖(dep),dep再通知到对应watcher,watcher做相应操作。 - 单例模式
js中单例模式一般都用全局变量,或者闭包实现。
我个人感觉能不用单例模式就不用单例模式,保证内存中的数据尽量都是当前页面或者任务需要的数据,减少冗余数据。
网友评论