首先描述一下,自己目前学习设计模式的状态。
基本上两天看一种设计模式,看到那种有切身工作体会的地方,遇到类似的场景会记录下来。
接下来,设计模式的感悟要从Spring源码的阅读经历说起。作为一枚Java开发,Spring框架不可能不知道,这个框架在传闻中是非常优秀的,使用了大量的设计模式,听说仔细阅读Spring源码对程序员的能力提升很有帮助。
于是乎,我在去年尝试去阅读源码。两周内断断续续的读,做笔记,画UML图,可是最终还是感觉脑子一片浆糊,整理的什么玩意儿。
接着我想,是不是我读源码的方式不对?然后使用搜索引擎搜索"如何阅读Spring源码","如何阅读开源软件源码"。
尝试了网上的方法论的文章,依然见效不明显,和Spring还是互不相识的感觉。
今年7月份去面试一家物联网公司的时候,被问到一个题目,面试官问:“Spring最核心的是什么?”,我答:“控制反转,依赖注入”,还没等我解释这两个概念,他即否定了,"是Bean 工厂,在Spring框架没有出现以前,都是自己写类似Bean工厂的工具,用来解耦Bean的创建和使用。"。
这个印象实在太深,让我对Spring有了最原始的认知。因为自己一直是为了源码而读源码,没有思考过他问的这些问题,比如接着面试官的问题还可以问,为什么需要解耦Bean的创建和使用?Bean的创建和使用放在一起有什么不好的?Spring框架是为了解决开发过程中的什么问题?没有Spring框架,你怎么解决这些问题?
渐渐认识到,上面这些涉及一个非常庞大的主题,软件工程的方方面面。
小结:框架只是一种工具,把前人优秀的开发习惯、规范、流程,做成一个有体系的通用的工具。目的是为了解决生产中别人可能也会遇到的一些问题(最初是为了解决自己的问题),提高效率,提高可维护性、可复用性,可以相对从容的面对日常变幻莫测的需求。
所以,现在很明确,去学习设计模式,设计模式是思想,是前人在编码设计时思考的沉淀,先把设计模式学个几遍,再回来看Spring源码的实现。