一:如何才能真正理解和掌握設計模式呢?
1:我覺得先得約定一下,到底什麼樣的標準才算是真正理解和掌握設計模式,當然這個沒有國際標準,只能一家之言了.
我認為, 真正理解和掌握設計模式的標準就是:深入領會和掌握模式的設計思想和設計手法的精髓,能夠自如的把設計模式應用到實際專案中去,而且不會拘泥於模式的實現形式,通常會根據實際情況進行變形的應用,但是萬變不離其宗,這個宗就是模式的設計思想和設計手法的精髓。通俗點說,就是很多朋友說的「無招勝有招」的境界。
2:如何才能做到呢?
我認為需要做到如下幾條:
(1)全面、系統、深入的掌握設計模式的知識,這是基礎
(2)在實際工作中,反覆的嘗試使用,並總結得失
(3)再回去學習設計模式的理論,並結合應用來深入思考
(4)然後再用、再思考
(5)直到這些設計思想和設計方式都融入我們自己的思維裡面,當我們做東西的時候,能夠自然而然的,隨意的應用這些知識來解決實際問題,就好像是自己思維的一部分,那就算小有成就了。
二: 如何才能把設計模式真正應用到我的專案中呢?
我覺得這個要分兩種情況來說,一種是有一定話語權的朋友,另外一種是完全沒有話語權的朋友。
1:針對有一定話語權的朋友,可以採用小步快跑的方式在專案中加入設計模式。
具體點說,就是逐步來,先從自己熟悉的,能掌控的模式開始,經過自己的分析和判斷,專案中的某個地方或某個功能,可以使用某個模式來解決,於是就嘗試著把這個模式加入到專案中,然後及時總結經驗教訓。
如果第乙個模式新增成功了,那就開始第二個,以此類推。類似於重構的方式,但是沒有重構那麼多的要求。
如果不成功,沒有關係,也得到寶貴的教訓了,那就總結一下,下次再來,反正專案有的是。
記住了,一定要勇於邁出第一步,其實很多模式都很簡單,多用幾回就會了。
2:針對沒有話語權的朋友
乙個方案,就是把自己思考的結果,匯報給有話語權的領導,然後盡力說服他讓你去嘗試,如果被否,嗬嗬,下乙個方案。
第二種方案,「同步並行法」,具體點說,就是自己在家裡構建一套跟上班相同或相似的環境,然後利用業務時間,按照自己的想法來嘗試一下,並總結經驗教訓。這種方案就是累人點,但效果也不錯,當初我就是用這個方案來學習設計模式的,呵呵。現在大家都有筆記本了,上班和下班用的環境都一樣,因此會更方便。
三:這些設計模式單獨看都好像會,就是不會綜合起來用,該怎麼辦呢?
我覺得這個問題也要分兩個層面來說,乙個是真的達到能單獨使用每個設計模式的水平,另外乙個是根本沒有掌握單個設計模式如何應用。
1:針對真的達到能單獨使用每個設計模式的水平的朋友,建議:
(1)多看看設計得很好的開源專案,當然由於這些開源專案都很大,要有意思的挑選其中的某些模組來看
(2)細看的內容不宜挑得過大,太大了,根本看不過來,或者很難完全領悟;也不宜挑得過小,太小了看不出多個模式組合應用的精妙之處
(3)切忌不要看成源**注釋型的,很多朋友分析和研究開源專案,就侷限在**上,如何一步一步呼叫起來的,然後在**上寫注釋,覺得這樣自己就看懂了。
其實不然,真正看別人的系統,在沒有設計文件的情況下,難度是非常高的,你需要通過看源**,來分析別人的分析過程,設計過程,需要從整體系統上、從設計思路上去理解和把握,這樣才能真正學到人家設計的精髓。
簡單點說,比如把這個開源專案已經實現的功能作為需求交給你,你怎麼樣一步一步分析和設計,得到你看到的最終的樣子,這個難度是很大的,必須要自身達到相當的高度才行。
(4)看到好的設計或者好的設計模式的組合,要多去模仿,然後再實際專案中多嘗試使用,然後體會這樣組合是否合適,同時深化自己對單個模式本質的領悟
小結一下:就是要多看設計較好、大小合適的專案;然後多嘗試,多使用;然後就是多思考和多總結。
2:針對根本沒有掌握單個設計模式如何應用的朋友,建議:
(1)平和心態,避免眼高手低
(2)切切實實從基礎理論開始,深入掌握和領會每個模式的功能、基本結構、實現手法、適用場景、使用效果等等
(3)小範圍的嘗試1-3個模式的組合,估計剛開始,更多的模式組合也不太容易控制,別著急,慢慢來
(4)在應用中不斷加深對設計模式的理解,為綜合應用這些模式打下堅實的基礎
(5)到了一定程度,就可以參看 1 的建議了
記住:日積月累,必有所成
設計模式分類與學習方法
從目的來看 從範圍看 元件協作模式通過 晚期繫結,來實現框架與應用程式之間的松耦合,是二者之間協作時常有的。包含的設計模式 在軟體元件的設計中,如果責任劃分的不清晰,使用繼承得到的結果往往是隨著需求的變化,子類急劇膨脹,同時充斥著重複的 這時候的關鍵是劃分責任。通過 物件建立 模式繞開new,來避免...
It學習方法
這段時間,對於下面的這些學習方法總是不能很好的去執行,要麼會忘記,要麼不理會,現在把他寫出來,當自己忘記或者不理會的時候,給自己乙個提醒。1 請不要跑得太快,否則你將錯過沿途的風景。同樣的,在我們程式設計過程中,這道理也是類似的。當我們為了看某本it書籍的時候,急於把它看完,往往導致急躁的心裡,沿途...
學習方法公升級及思維模式學習
自學過程中如果有實戰經驗豐富的高人指導一下,給我繪出路線圖,指出攀登的方向,哪些地方有陷阱,哪些地方不應該浪費時間,我的自學就可以減少摸索,少走彎路,很不幸,我當年沒有遇到,如果時光倒流,我會想辦法找乙個來指導我。我會自己寫個web程式,可以考慮把上面提到的經典的薪水支付案例改造成web 版,用最基...