这是关于《JavaScript 设计模式与开发实践》的笔记,尝试总结了设计模式的精髓,从 JS 角度出发拓展到其他语言,请支持曾探作者原版~
设计模式从哪来
设计模式从1995年起始,为众多程序工作者提供了设计软件的灵感和解决问题的思路
实际上模式这个词起源于建筑学,是找到了许多高质量设计中的共同点,并使用模式一次指代了这种相似性。那么通俗一点说,设计模式就是:给面向对象软件开发中一些好的设计取个名字
一些好的设计你可能自然可以想到,不知不觉中已经使用无数次,但我们仍然需要公式化和规范化这样的设计工作,比如 JavaScript 中的 each 函数:如果你和你要讲述的对方都了解迭代器模式,描述起这个函数就不再困难了!
所以学习设计模式是自然的,或许23种常见设计模式中,日常代码工作时可能已经熟悉许多了呢~
学习模式的作用
如果熟悉设计模式,当合适的场景出现时,自然而然可以想到用设计模式来解决问题
系统中出现了大量相似对象,给内存造成了负担,熟悉设计模式的人自然想到了享元模式
如果我们还没有学过设计模式,遇到问题的时候,如果觉得这个问题出现的概率应该很高,不妨去翻翻设计模式,说不定就能找到别人同样遇到的问题
设计模式和编程语言
结论是,在函数式语言和面向对象语言里,都离不开设计模式
在1996年GoF提出的23种设计模式中,16种在Lisp语言中已经是天然的实现,再例如:Command 模式在 Java 中需要一个命令类、一个接收者类、一个调用者类,Command 模式把运算块封装在命令对象的方法内,成为该对象的行为,并把命令对象四处传递,但在 Lisp 和 JS 这种把函数当作一等对象的语言中,函数就能封装运算块,且函数可以被当成对象一样四处传递,因此 Command 模式就是 JS 中隐藏而天然实现的模式了
什么时候用设计模式
使用设计模式很多时候无疑会导致代码量增加,结构变得复杂
但,这就好像一间屋子,一开始肯定直接把东西丢进去就好了,但随着东西变多,就需要一些规则来处理分类等等