饕餮盛宴之設計模式

ZeroWM發表於2014-08-09


  公司秉承為了建立更加高複用,健壯的程式碼,進行了陸續三天的設計模式的講解,不僅僅讓我們鞏固了知識,開拓了眼界,還讓我們對好的學習方法有了更清晰真切的瞭解。這次模式的講解,感覺收穫頗豐。


一、總體思想

  1.看待問題要簡單、抽象

學習一個東西,要學會極端化的來對待它,先從簡單的開始。我們往往會選取一箇中間值來講解,結果把別人搞暈了,自己也暈了。

  2.學習要腳踏實地,搞懂的越晚,付出的代價越大

學習的初期,儘可能要還原學習的原貌,搞懂它,這樣在學習的後期才能走的更輕鬆。如果現在能搞懂卻不願意弄懂,以後還會遇到其它的問題。越來越多的問題堆砌起來,更加不容易處理,形成更大的阻礙。

  3.甘於“笨拙”的前行

很多時候,我們總是習慣去尋找,更加省時高效的學習方法。其實這個時候,我們乖乖的把每個字都看一遍,都在紙上畫一遍,效果可能會更好。比如學三級網路的時候,把各類的IP地址用0、1在紙上寫一遍,這樣看似很笨拙,但是實際比把時間放在尋找好方法上更省時省力。學習不侷限於看多少遍,也不侷限於看多少本書,只要達到同樣的效果,用的時間少就好。

二、具體思想——學習設計模式的思路

1.多問幾個為什麼

是什麼?為什麼用它?用了怎麼樣,有什麼好處?不用又怎麼樣?還可以跟什麼結合在一起用?可以應用到什麼樣的場景中?學習其實也是一個物件導向的過程。我們面向的物件是學以致用。

2.全域性理解模式

要結合程式碼、類圖、關係來看待整個設計模式的學習。哪塊程式碼對應類圖的哪部分,哪根線體現在哪些程式碼中,這些要對應著去學習,不能單獨的、片面的理解類圖和程式碼。

3.找相同點和不同點

模式們很相似,都是有類圖和關係構成。模式們又很不一樣,即使有的模式類圖非常的相似,但是經過功能對比,發現它們的側重點並不相同。這樣讓我們對設計模式有了一個更加深刻的理解。有的模式還可以結合在一起使用,這樣充分利用了兩個模式的好處,又儘可能規避了兩者的劣勢,寫程式碼的最高層次就是手中無劍、心中無劍的境界吧!

4.理論實踐相結合

光有理論是不足以學好一項技術的。機房的實踐、未來做專案的實踐,會讓我們對知識有一個更加立體的認知。僅僅有理論,只是紙上談兵。

5.學習即生活

學習中的例子,生活中都有原型,只要我們擁有一雙勇於發現的眼睛。老師講的那些例子都很鮮活、生動,又沒有因為生活的色彩而掩去了程式碼間的邏輯。跟生活聯絡,讓平時束之高閣的東西變的親切可人,讓我們更加容易接受、吸收。

三、學習形式的感觸  

1.犀利的提問,讓我歎為觀止

   提問確實是讓我們深入學習知識的好方法。公司大牛每次一提問,我就特別想低頭,因為害怕自己理解的不深刻,被提問,回答不好丟人。大牛們問的這些問題很有水平,但是我個人在學習過程中,遇難就想放過,結果導致自己的理解跟學的好的同學相差甚遠。還記得前幾天boss對我做的ppt不是很滿意,其中很大原因就是因為自己在調查的時候淺嘗輒止,並沒有深入研究,只是看了個表面。每次都比別人多想一步,多研究一點,一年365天,那會是多大的進步啊。

2.積極參與,勇於發表自己見解

   挺佩服那些敢於表現自己想法的同事。真正的勇士敢於直面慘淡的人生,敢於正視淋漓的鮮血。當然我沒有那麼慘啦!真正的對自己好的人敢於把自己丟擲去,即使說錯了,也欣然接受別人對自己觀點的“指指點點”。只有發現自己的不足,才是進步最快的時候。深切的體會到,更多的進步源自於阻力和批評,並非表揚和讚美。

3.給別人講也是另外一種學習

  給別人講,首先自己要搞懂,搞清楚。否則別人一問,自己就歇菜了。給別人講之前,要查很多資料,經過多方考證。說的話,做的ppt都是經過了深思熟慮的結晶。每一次的書寫,思考都是對學習的另外一種深入。個人認為,能給別人講出來才是真正的掌握了,消化了。


四、個人體驗

   講設計模式之前,我對各個模式都做了預習工作,在聽代理模式講課的時候,感觸非常深刻。"屌絲"姐丟擲一個問題,可以不可以去掉介面?因為這個問題,開始動腦筋想:沒有介面,就沒有目的性。比如那個大話例子:代理替當事人送女孩禮物,不去實現送禮物的介面,讓代理人代理啥啊!!!後來又講到了一個貌似像外觀模式的代理模式的登入例項,代理和被代理者的方法不一樣。趕緊翻書,看程式碼裡面代理和被代理者的關係,原來代理是new了一個被代理者,它裡面的方法也是呼叫的被代理者的方法。後來看見好多個公司很多同事對代理的理解各異,爭執不下,自己也有了一點小小的個人理解。代理嗎,如果當事人能幹的事情就不讓代理來幹了,如果自己好意思臉皮夠厚,誰還讓別人幫自己追女朋友啊!代理肯定是因為某些地方受限制,才會讓別人代理的。比如遠端代理,這就是地域受限;虛擬代理,就是圖片緩衝時間較長受限;安全代理,就是因為訪問許可權受限制……
  當時講課完,我還想講設計模式為啥不知道代理是被代理者的例項化,為啥把代理和外觀搞不清楚,為啥光講代理模式怎麼怎麼不好呢?現在一想,真是機智啊!如果講的都是對的,我也不一定會想這麼多,去書中驗證,認真查詢,反思外觀和代理的異同,思考代理模式的好處。有的時候不一定演講者要講的多麼多麼好,多麼多麼對,還可以把問題提出來讓大家一起思考討論。
     真正好的演講者不是自己講的天花亂墜,別人在下面哈欠連連,而是善於引導大家思考,達到讓此次演講內容深入人心的效果。正向引導,反向引導,能達到讓大家思考的目的的都是好引導。反向引導,非常適合我這樣,學的不怎麼紮實,還想挑挑骨頭,充充能人的人,O(∩_∩)O嘎嘎~  這就是對比思想的偉大啊!
  
    

相關文章