本系列博文,均为《HeadFirst设计模式》读后有感与总结。
设计模式?
设计模式,有人称 Design Model 或 Design Patterns,《HeadFirst设计模式》中说的是xxx Model,所以这里我就 DM 称呼它。
虽然没看过其它介绍 DM 的书籍,但是看了《HeadFirst设计模式》后,我觉得这的确是一本非常结构明晰且内容易懂的好书。就比如菜鸟教程的介绍,就过于生硬,难以看一遍理解某个模式的目标功能与结构。
这确实是本好书hhhhh
是什么?
那,设计模式是什么呢?我看之前以为是 JAVA 内容的一部分(毕竟害在面经看到的)。看书之后,我觉得,设计模式就是有关思考的思考。也许你还不理解,其实它就是描述了软件开发人员(当然主要是 OO ‘Object Oriented’ 编程人员)在开发过程中常见问题的核心解决方案。
也许你就会好奇,为什么不用自己的方案,难道什么都要照搬?这就是我刚说的,它是有关思考的思考。它是一套大多数人都知晓的、经过时间案例检验的、可以合理完美解决问题的总结。
为什么学?
有一个词,该书中提到过,叫共享词汇,大多数人都有设计模式的共享词汇,它能帮助开发人员使用更少的词汇进行更深的交流,并且可以将思考保持在设计层面,不会涉及实现对象与类等繁琐的事情上。(对了,你不懂设计模式,要是做 OO 开发,迟早得学,毕竟它已经是行业的一个标准术语系统了)
同时,借用菜鸟教程的介绍:
毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
开发人员的共同平台
设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。
设计模式是最佳的实践
设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。
提提 GoF
每个技术或者思想都有所谓的代表人物或事件,就像计算机之父——冯·诺依曼,人工智能的缘起——达特茅斯会议等等。设计模式也有,叫 GoF 四人组,即 Gang of Four,其实就是《Design Patterns: Elements of Reusable Object-Oriented Software》这本书的作者,该书首次提到了软件开发中设计模式的概念以及设计模式原则:
- 对接口编程而不是对实现编程。
- 优先使用对象组合而不是继承。
《Design Patterns: Elements of Reusable Object-Oriented Software》书中提到了 23 种设计模式,而 HeadFirst 的这本书提到的并不全,我也只会跟随书中提到的做一一介绍,其他的模式有空再介绍(也许没空了?/ 狗头)。
小提示
库与框架一直是 Java 软件开发的重要角色,我们从中挑选重要的组件,然后丢到合适的地方,就形成了我们要的结果。(就像 Java API 带来的 网络、GUI、IO、多线程等)
但是有一个问题不是我们光丢丢组件就可以解决的,那就是易了解、易维护、具有弹性的结构,这些需要开发人员根据条件与实际情况进行设计,所以我们需要设计模式。
但是设计模式不会直接进入你的代码,如果你没学过 DM,那么也许你看了 DM 的代码,那你也不会发现它的存在;它应该先进入你的大脑,当你的脑子里有 DM 的知识后,你就会开始在新的设计使用它,或在旧的代码中重做。它是你关于思考的思考,关于你自己设计的思考。
接下来
后续我会尝试用,一些简单的实现方法,进行模式介绍与案例代码实现,也许会放在 Spring 框架中实现。(毕竟还不是很会 Spring,所以顺便学学)