#前言
为什么要学习设计模式?迫切想提升自己,却找不到方向,整体梳理了一下知识体系,觉得还是从基础开始。设计模式不是看一遍就学会的,需要不断在编写、优化代码的过程中深入理解。
设计模式的定义是:
“在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案”
通俗一点说,设计模式是在某种场合下对某个问题的一种解决方案。如果再通俗一点说,设计模式就是给面向对象软件开发中的一些好的设计取个名字。
相信大家都听过三十六计,走为上策,意为败局已定,无可挽回,唯有退却,方是上策。在战场上,瞬息万变,统帅不可能和士兵慢慢的分析局势。一个跑字,简洁明了,能让士兵们直接领悟到统帅表达的意思。
适合JavaScript的设计原则,对其他设计原则感兴趣的同学可以自行百度。
1 单一职责原则
功能要单一。一个对象(方法)只做一件事情。
2 最少知识原则
尽量减少对象之间的交互。如果两个对象之间不必彼此直接通信,那么这两个对象就不要发生直接的相互联系。
3 开闭原则
对扩展开放,对修改关闭。当需要改变一个程序的功能或者给这个程序增加新功能的时候,可以使用增加代码的方式,但是不允许改动程序的源代码。
单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
有一些对象往往只需要一个,例如vuex和redux中的store、购物车、登录弹出等等。
上面介绍的是单例模式的恶汉模式,还有一种懒汉模式,有兴趣的可以研究一下。
懒汉式:和懒加载一样,使用得时候去创建实例子(实例复杂的时候可以使用。)
饿汉式:生命周期开始的时候就创建实例(实例不复杂的时候可以,复杂的时候影响页面加载速度)。
代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。
在生活中可以找到很多代理模式的场景。比如,你是一个导演,你肯定不会直接联系明星,而是联系明星的经纪人,由明星的经纪人来决定明星是否和你合作。
发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。
举个现实中的栗子,容易理解。去星巴克点咖啡,点好之后坐等被叫。
适配器模式的作用是解决两个软件实体间的接口不兼容的问题。
现实中有很多栗子,比如,不同国家没有统一电源插座需要转换头。
策略模式的思想是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
我的理解是不同的逻辑分开处理,避免出现大量if...else或者switch...case。
#总结
这里只是总结了一些常用的设计模式,后续还会持续更新,对设计模式有兴趣的可以读一读《JavaScript设计模式与开发实践》。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。