目前的AI这么火,随便搜下就能得到代码,为什么还要学习设计模式?
我认为AI虽然足够智能,它确实可以把你的某些需求翻译出来,但是如果你做一些中大型项目,它可能显得有些无力。这时候你至少也要向AI准确描述这些设计模式,如何组装,在哪个模块使用等等。如果不理解设计模式,很难用AI去构造一个理想中的项目。
网上那么多设计模式教程,为什么还要自己写?
每个人对设计模式的理解都有自己独特的见解。而我作为一个也在学习和实践的程序员,想把自己在这个过程中对设计模式的理解,分享给大家,也是对自己学习和实践的一个巩固。
为什么要选择Java语言?
虽然我现在主要是在用GO和kotlin语言开发项目,但目前从语言排名来看,Java的份额还是占主导地位(C++门槛高,Python没学过),而且从事java开发的还是很多的,所以我选用了Java语言作为设计模式的描述。
关于设计模式的6大原则
- 单一原则
- 里氏替换原则
- 迪米特法则
- 开闭原则
- 依赖倒转原则
- 合成与聚合原则
这些概念我也不具体讲了,网上有很多他们的定义,我准备在每个模式的实例中去引入用了哪些相关原则,这样我感觉要比上来都说概念的好。总之这些原则都在说一个事,解耦。但并非严格的要去机械式的遵循它们,还需要看场景。
感悟
设计模式是程序设计的底层基石,就像盖房子一样,没有一个好的设计,那么就不会有那么好的建筑,所以我们要学习它!学习的过程中绝非仅看看教程,敲敲教程中的demo就能OK的,有些理解可能需要花费很久,还需要在实战中,结合理论,才能得到思维链有效升华。真实的项目开发中,也不是什么都生搬硬套的去引入某个模式,可能这样还会造成系统的额外负担。不过在某些情况下,尤其是初学者,生搬硬套也未必是坏事,因为正在学习,必须要去实践。设计模式没有所谓的好与坏,只有遇到合适的项目,引入合适的模式。
教程说明
我个人认为很多初学者不愿意去看或者去学习标准的UML图(反正我是),因为我们可能缺乏它的系统知识,刚开始认知有些难。所以我可能会自己简单画出自己理解的图,或者不画图。
设计模式有很多,标准的有23种。但是经过多年的沉淀,经常使用的就那几种,所以我就准备分享常用的设计模式,以及最后分享几个目前流行的架构模式(设计模式的组合,MVC,MVP)每个代码,我都会同步到gitcode上,以便大家查阅
教程不适合刚学完编程语言的朋友,设计模式这门功课,需要少量的工作实战经验,否则刚开始都学习,会很吃力,而且也没有什么效果。
教程仅仅是自己对于设计模式理解的分享,由于自己也是个学习者经验非老道,所以面向的是初学者。如您认为讲解的哪里不合适,请留言出来,我们一起讨论并且改正!
最后不得不提GOF四人组了,这几位大佬为我们的设计模式提供了标准的概念,让我们这些后辈得以使用,感谢他们的贡献!