前言
最近一段时间研究了一波设计模式相关的话题。理论集合实际的方式,将设计模式与实际项目相结合,获益颇丰。
设计模式基本原理是比较简单的,难的是如何将其运用到实际工作中去,且真的解决实际的问题,而不是为了使用模式而使用设计模式
这个是需要工作经验的积累、众多项目的经历,以及实际中遇到的痛点。尽管在当时可能不会解决,但是在研究设计模式的时候,一定要有:哦,原来可以通过这个设计模式来解决
这段时间关于设计模式的产出:
- 设计模式 ~ 面向对象 6 大设计原则剖析与实战
- 设计模式 ~ 模板方法模式分析与实战
- 设计模式 ~ 观察者模式分析与实战
- 设计模式 ~ 单例模式分析与实战
- 设计模式 ~ 深入理解建造者模式与实战
- 设计模式 ~ 工厂模式剖析与实战
- 设计模式 ~ 适配器模式分析与实战
- 设计模式 ~ 装饰模式探究
- 设计模式 ~ 深入理解代理模式
为什么写这个系列的文章?
写这个设计模式系列相关的文章,主要有两个原因:
-
市面上的博客主要是集中设计模式的基本概念
我觉得这是一种缺憾,很少有博客从实战的角度去分析设计模式,所以希望通过实际项目结合设计模式的方式,谈谈我对面向对象的设计原则思考和见解,以及如何通过面向对象的设计原则以及设计模式去
codereView
和重构代码
,希望对其他开发者有抛砖引玉的作用。在写作的期间,有的时候1
个小时增长了40
多个粉丝,同时收到了许多的点赞和评论,也是激励笔者持续学习和创作的动力。同时也有好几篇设计模式文章被推荐到CSDN
首页。 -
通过博客的方式,更加深入的研究设计模式
写博客不仅仅把某种成果复述出来,而是反复的咀嚼,反复的思考,为什么是这样的,为什么不是那样,这也是一种复盘和再次深度思考的过程,从而形成自己的经验的。在写作的过程中,自己的脑海中会冒出很多疑问,然后你会参考很多书籍和资料甚至是工作中的项目代码。在研究设计模式的过程中也参考了很多书籍,如:
《设计模式之禅》
、《Java设计模式及实践》
、《Java设计模式深入研究》
、《设计模式(Java版)》
、《Java与模式》
、《Head First 设计模式》
。你会惊奇的发现它们之间有很多是互相借鉴的,很多讲解基本一模一样。但是他们也有自己的优点,也学到了很多,在阅读这些书籍的时候,有的时候灵光乍现,以前的某段代码是可以通过这个这个设计原则或设计模式来更好的组织的,所以人的大脑是很奇怪的。整个写作过程是在不断的思考、复盘,然后形成自己的见解,最终形成属于自己的经验
历程
研究设计模式的过程中主要经历以下几个阶段:
-
基本概念
针对每个模式,首先要搞清楚它的基本概念,
类图
是什么样的,它有哪些角色
组成的,主要是解决哪些问题
的,这个设计模式有什么不足,然后写一个最简易的代码来实现一个这样的模式,从代码的层面感受下模式是什么样子的。
然后参考其他书籍是怎么介绍这个模式的,它们讲解有什么不同,因为每本书的作者项目经验不同,经历也不同,所以需要去看下它们是哪些是可以我们学习的。这是阅读方法中的主题阅读方法,就是研究某一主题,我们需要参考很多的书籍关于该主题的论述。 -
使用
使用设计模式包括在项目中使用,也包括一些源码如
JDK
,或使用比较广泛的开源框架等,看看他们是怎么使用这个设计模式的,这样使用有什么好处?经过这些思考,帮助我们更好在实际开发中使用它。
对现在正在做的项目进行codeReview
看看哪些地方可以改了,或者以前做过程中遇到哪些代码不好维护的痛点,看看哪些可以使用面向对象原则或设计模式进行改造。 -
沉淀
在阅读源码的时候,里面的设计模式可能不是和我们学习设计模式基本概念的时候一模一样的,有些是经过修改或根据框架需求来改造的,我们要知道为什么要这么做,而不是机械的照着设计模式
UML
图来实现。
在实际项目中使用设计模式或者设计原则的时候,一定要不断的反思,使用这个设计模式或面向对象设计原则,是不是代码更好维护,是不是违反其他设计原则、对工作量的影响有多大等等,经过这些灵魂发问,会慢慢形成属于自己的对设计模式设计原则的见解。也就是说使用它一定要有理论支撑
,而不是靠感觉。
最后
当然还有很多设计模式没有分析,只介绍了一些常用的设计模式,设计模式以及面向对象的设计原则自己掌握的远远不够,这个需要经过项目洗礼,以及对设计模式和面向对象设计原则的应用和理解。
研究设计模式及面向对象的程序设计是贯穿整个程序员的职业生涯。所以今后会根据自己对设计模式的理解和使用,会持续更新已经写好的关于设计模式的文章,或者新写还没有分析到的文章,所以在这里只做一个小结。
如果你在设计模式和程序设计原则方面有自己的见解或者使用经验欢迎留言交流 ~
转载:https://blog.csdn.net/johnny901114/article/details/100931166