一、说在前面的废话
一直在反复看设计模式,在不同的书上都会涉及,举出的例子也个各不相同,看完之后,总感觉有雾里看花的感觉,如果按照作者的思路来理解好像是懂了,但是稍微思考一下,问自己几个问题,马上又糊涂了; 所以我就好好的想了想这么几个事
- 设计模式这个东西到底为什么学起来这么费劲?
- 咱不怕吃苦,但是应该怎么学才能降低学习难度,一步一步来就能搞懂,换句话说,有没有啥练小号的套路,你说我照做,结果就OK
- 学到哪算把一个模式整明白了?技术问题都跟起土豆似的,看着看着就出来一堆,一个模式看到哪里可以基本上停下来? ( 我说的是搞明白,还不是用得好,要用得好又进入到业务领域牵出一堆OOA/OOD的问题来了
1.1 设计模式的学习难度
这个问题的关键是,模式是一种思维模式运用到了很多Java的基本原理,是立体的综合的,而学习只能是线性的,只能一个知识点一个知识点的来; 拿一个洗脸盆站瀑布下面接水不被拍晕菜才怪;
设计模式学习的困难在于,学的过程只能是一个知识点一个知识点的学,而设计本身就是综合多个知识点解决共性问题的方式,需要具备多个背景知识才能理解和解读; 而且又必须在各种说明各种例子之上通过思考,把握住基本原理,然后在实际开发过程中运用总结,去芜存精,领会最本质的抽象原理,在实际中知道使用的边界,才算真正掌握;
设计模式应用最多的地方是在框架设计;而框架设计的本质是一种思路的实现,而决定这种思路是否可行的是背后非常本质的一种原理,了解原理才能设计出一套机制,而对机制的使用是方法,学SSH是学方法,是拿模子拍面;学模式是掌握规律,是决定了模式的模式。
1.2 合理的学习曲线降低难度
先把基本概念弄对(这个就是砖头),然后再看看怎么用(这个就是看别人改完的房子啥样),再思考为啥这么弄不这么弄行不行,直到弄明白本质规则( 知道出建筑图纸的人是咋想的 )
学起来是: 基础概念 -> 使用方法 -> 背后原理
用起来是: 核心原理 -> 应用场景 -> 思考判断 -> 具体应用
Level1:本质-思路( 好比客观规律 )
Level2:模式-对思路的思考,是抽象后的思考( 好比物理定律 )
Level3:框架,运用模式解决共性问题的一种方案( 具体的物理公式 )
Level4:设计,遵循框架,按照框架的使用方法来使用,使框架能够运行起来( 做了个蒸汽机 )
Level5:应用,具体问题得以解决( 拿蒸汽机拉磨 )
Level6:需求,具体问题( 咋把麦子变成麦粉 )
所以我打算把我的学习笔记按照 看书的时候扯出来的知识点( 由表及里 ) 懂了之后用自己的语言阐述( 由里而外 ) 两个循环,把自己的认知-思考-归纳-总结-阐述的过程记录下来,一个点的记录下来,再连成片,再记下来,再练成面,最后搞懂本质,把技能练熟,就能享受到创造的乐趣了;
1.3 如何衡量是否已经掌握
顺着看,按作者的思路看懂了,那是真的懂了么?问两个问题估计自己就蒙了,里面的知识点没搞清楚,没理解为啥要这么干,有啥好处,啥时候可以这么干,不这么干会怎样?不按照规定的方式干会怎样?这些问题不整清楚了,也不算真的把这个事理解清楚了,后面肯定有拌蒜的时候;
好比爬珠峰,从南坡爬也行,从北坡爬也行,先把框架运用熟了再琢磨原理,或者先把原理琢磨明白了再反复实践,掌握一个技能要反复思考去芜存菁,让核心概念越来越清晰,能从具体事务看到本质,能运用规律解决具体问题。 呵呵,真要是达到了,就是境界+技能都牛,对,就是学霸型的。
咱是学爬型的,不过慢慢爬,也能爬到,反正是不能跑步上珠峰,都是爬上去的。