武侠小说中武术分招式和内功,比如独孤九剑就是招式,九阳神功就是内功。招式可能照猫画虎很快就能学会,但是内功心法则需要日积月累,一点一点的修炼。
在我们日常开发中也分招式和内功。比如我们常见的C#、Java、C++、等编程语言,Visual Studio、Eclipse等开发工具,ASP.NET Core、JSP等开发技术,AutoFac、CAP等框架技术,这些我们都可以认为是招式。而数据结构、算法、设计模式、重构、软件工程等则为内功。
一般内功好的人,学习剑招也会很快,就比如张无忌学会了九阳神功后,什么乾坤大挪移、少林龙爪手都能很快学会,甚至超越那些修炼了很多年的人。
在软件开发领域,那些知道数据结构、算法、设计模式、重构、软件工程等的人,当要去学习新的语言或开发技术的时候,就会学的很快,甚至可以弯道超车。为什么会这样?因为他们内功深厚,逻辑清晰,可以达到触类旁通。所以在当今的开发领域,只知道剑招很难脱颖而出,修炼内功至关重要。
另外,那些在招式上触碰到瓶颈的人,也可以通过内功的修炼来提升。
接下来,先立个Flag,先把设计模式啃下来,后边也会总结一下自己的学习笔记。
设计模式起源于建筑领域。毕竟建筑领域经历了几千年的沉淀,有太多的经验可以吸取。
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次的重用那些已有的成功的解决方案,无须再重复相同的工作。简单的讲就是:
模式是在特定的环境下人们解决某类重复出现问题的一套成功或有效的解决方案。
软件模式:是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等。实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式。软件模式的基础结构主要由四部分构成:
软件模式与具体的应用领域无关,无论是web、窗体、移动端等都可以使用。
设计模式用于在特定条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案。
设计模式(Design Pattern) 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码的可靠性。
简单就是,前辈们一步步踩坑总结的经验,使我们可以少走弯路,并写出更加优雅的代码。
最初GoF在《设计模式:可复用面向对象软件的基础》中介绍了23种经典设计模式,但是到了今天已经远远不止这些。
设计模式一般包含模式名称、问题、目的、解决方案和效果等组成要素,其中模式名称、问题、解决方案和效果又是关键要素。
设计模式根据用途可以分为三种类型:
另外简单工厂模式,不属于23种设计模式,但是每本书基本都会进行介绍,可能太简单了。
下边是设计模式的分类:

[DLGCY] 额外参考:
[读书笔记] 《大话设计模式》