乐趣区

关于java:基本功的重要性设计模式

代码品质既是设计进去的,也是迭代优化进去的。换句话说,无论是后期的产品需要剖析、架构设计,还是前期的具体代码设计与编码,都离不开良好的设计。
程序设计是每个程序员的基本功。然而,大多数人都只是对新技术充满热情,却很少有人违心沉下心来,花几个月甚至一两年的工夫来重温基础知识,修炼基本功。
在面对所谓“新技术”的浪潮下,始终看不透背地暗藏的浮夸法则,只是东一榔头西一棒槌地在原地踏步。
当我真正亲自参加到编码实际和设计中后,才猛然发现设计模式的诸多劣势,比方,晋升源码浏览效率,疾速解决短期我的项目中的问题,升高保护老本等。
而在一直学习与实际设计模式的过程中播种了很多实打实的教训,包含编程的技巧、架构设计的启发、面试技巧等
如何学好设计模式
有了学习设计模式的指标之后,还得找对学习设计模式的正确办法。
学习设计模式最无效的方法就是:被动学习 + 刻意练习。
在理论工作中,很少有人通知你一个程序该如何设计,他们只会要求有一个后果——做出一个好的程序并能运行起来。
面对这样的要求,你经常只能处于被动学习状态:工作里须要什么你才学习什么,东一榔头,西一棒槌。这样短期尽管无效,然而长期下来,你的常识积攒速度其实很慢。所以,要想学好设计模式,你就得放弃这种被动学习的形式,要有指标、有系统地去被动学习:找寻好的材料,剖析了解,凋谢思维。
是不是还有以下纳闷?
1,在面试中时常被问到设计模式,可理论工作中却很少应用;
2,每个模式的样例代码都很相熟,理论编码时却总感觉力不从心,实现艰难;
3,很多零碎设计看上去和很多模式都很像,却不晓得到底该用一个模式,还是多个模式;
4,设计模式除了在编码阶段有用外,在设计上仿佛用途并不大。
其实,过后这些困惑的要害并不在于设计模式过于形象或利用有难度,而在于我可能从一开始就没有搞清楚设计模式的利用范畴和背景:设计模式到底解决什么问题?为什么要形象这样的场景?又是如何解决这些问题的?
对设计模式常见的误会
正因为没有搞清楚这些利用范畴和背景,才导致大多数时候咱们总是在“生吞活剥”设计模式,认为在利用设计模式,却不晓得还没入门就始终在误会设计模式,并无法控制地胡乱应用,最初反而引入了很多不必要的麻烦。
因而,要想学好设计模式,就得摘去这些误会。
误会一:经典模式太形象,很难学上来
说到设计模式,你的第一反馈是不是会想起“四人帮”GoF 的那本“经典”著述《设计模式:可复用面向对象软件的根底》?或者想起那 23 个“经典”的模式?
确实,设计模式太过于经典了,然而经典也会带来一个问题:过于形象,难以疾速了解。而对于业余时间本就不多的你来说,读形象的经典更是一件难上加难的事。
简略来说,设计模式从不同我的项目中总结进去的通用教训,是为了帮忙咱们疾速了解现有的零碎,并从中找出共性法则,如果没有足够的教训或者思考,反而容易引入谬误的设计,造成更多的麻烦。
所以说,“经典太形象”只是一个事实,只有你能肯花工夫认真解读,学上来并不难。
误会二:设计模式太繁多,简单业务场景难落地
当初,对于设计模式,有两个十分有意思的景象
在实践学习中,简直所有的开发人员都认为它很重要。
在工作实际中,绝大部分开发人员在我的项目中又找不到适合的利用场景。
其实,产生这个抵触的关键点在于:没有搞清楚设计模式解决问题的范畴所在。换句话说,设计模式并不是一种全场景的解决方案,它须要思考适用范围。
比方,在面向对象语言 Java 畛域中,如何最大限度施展面向对象语言的继承与组合的威力?如何解耦程序的相互依赖?设计模式会提供一些解答。
如果说你当初接到的是一个简单零碎的设计工作,比方,如何设计一个秒杀零碎?你不仅须要关怀业务性能的实现,还要关怀不同开发成员间的互相配置、服务器资源等,而此时你的脑海中浮现设计模式中的适配器模式、策略模式、状态模式……对你来说帮忙并不那么显著,因为你其实还没有到如此须要细节实现的阶段。
实际上,设计模式的提出就是为了解决限定畛域的无限问题。比方,针对非业务场景的技术框架,如何实现可复用的软件?如何可能为更多的人进步编程效率?像 Spring、Netty、MyBatis、JDK 等大家公认的工具,其实随处可见设计模式的利用,但同时并不是只有设计模式自身。
所以说,你不能把设计模式当作一种通用解决方案来看待,或者认为它就应该解决超出范围的问题,肯定要思考好它的适用范围,否则问题是得不到无效解决的。
误会三:模式既然很好用,那么所有皆模式
好的设计从来不是看用的模式有多少,而是看如何正当利用模式的设计思维,以及如何利用模式解决实在的问题。
所以说,学习设计模式是为了启发咱们的思考,而不是“手里握着锤子,满世界找钉子”。
如何正确学习设计模式
首先,要摆正心态。
设计模式不是万能灵药,不是银弹,设计模式能解决的问题其实是无限的,你应该始终保持一个平时的心态,正确剖析设计模式能够解决和不能解决的问题。
其次,搞清楚设计模式的背景常识
比方,设计模式如何定义?设计模式的历史演进与变动?设计模式有哪些实用的畛域?又有哪些不实用的畛域?如何联合实际剖析和应用?
学习一门常识时,如果总是疏忽关联的背景常识,长此以往会养成系统常识积攒的习惯——珍藏了很多材料,拆解、排汇却很少。而在学习关联常识时,你会发现,原来的常识会逐步连贯和串联起来,这是一个事倍功半的动作。
再次,致力具备高手独立思考的习惯
互联网时代,不缺材料和办法,缺的是能解决简单难题的高手。高手之所以成为高手,是因为高手不拘泥于某一常识的高低贵贱,而是放弃理智的判断,始终朝着动摇的指标前行。

退出移动版