该篇博文可说没什么具体内容,只是我自身对设计模式的一些看法。但某种程度上又能说是该系列最重要的一篇博文,因为为什么学,怎么学,学来何用这些问题往往比学习本身要难得多。这就类似于上过大学的人很多,认真学习的人却不多(相对基数而言),知道为什么学并将所学派上用场的人就更少了是一个道理。所以在正式开始本系列之前,我需要明白几个问题:设计模式是什么?设计模式有什么作用?
接触时至今日,我犹记得第一次接触观察者模式的场景…那时的是我刚结束Java基础的学习,正对着一本Java网络编程的书籍跃跃待试,却不知为何开篇没多久就是一整章的观察者模式的教学,于是乎我第一次接触了设计模式,并惊叹观察者模式的神妙,因为按我当时思维的狭隘,观察者的新增、删除、通知是必须要通过硬编码来实现的,也是从我突然明白,如果将代码结合设计模式,我能做到的事情远比想象中多得多。
只是时隔多年,如今的我才正式踏入设计模式的学习之路,这其中缘由很多,主要是公司项目的体量较小,CRUD足以完成任务,同时我将热情更多的投入了多线程与虚拟机的学习中,从而使得设计模式一再滞后。
对我来说学习设计模式并不是一件非常有难度的事情。我是一个有代码洁癖的人,命名、空行、注解及结构等这些大部分程序员都不(特别)注意的问题在我这有一套自定义的严格规范,我致力于将代码写到可复用且无修改的状态(原因是我讨厌重复/修改),这恰恰与设计模式的核心目标不谋而合,令我在无意之间掌握了许多设计模式的技巧。
看法(个人理解)废话说完,最后还是回归文章核心:设计模式是什么?设计模式有什么作用?
设计模式是什么?
设计模式的表象是一系列解决方案,可以理解为一系列的代码结构模板,用于在不同的场景下,使代码结构化达到最优解。而其本质是则面向对象思想在实际使用过程中经过提炼后的具体化产物。
设计模式有什么作用?
其实从上个问题的答案已经可以略知一二,通过在场景中使用特定的设计模式,可以使代码结构化达到最优解。这些代码结构化的最优解带来的好处包括但不限于以下条例。
对修改关闭,对拓展开启:当需求变更/新增时,可以无需或最小程度的修改代码,降低错误率;代码复用:对于功能本质相近/相同的代码,可以通过继承/组合等方式达到复用的目的;便于维护:代码松耦合高内聚,维护时影响范围小。



