通過大約兩個月的磨蹭,我終因而把設計模式打下來了。html
具體詳細在:http://www.cnblogs.com/linkstar/category/1087887.html程序員
那麼當我學習完成以後,所想到的第一件事,也就是大家標題上面所看到的同樣面試
學設計模式到底有啥用啊?在我學習完成以後爲了寫這個總結也是抓耳撓腮了一遍編程
因此在此須要對學習進行一個總結,這也是一個我的的總結,若是有不對的地方也請原諒設計模式
我所能想到的廣泛的目的有下面幾個架構
一、別人都說要學,別人都說好,因此我要學框架
二、面試會被問,因此必須學學習
三、讀源碼時看到別人在用,不學看不懂源碼爲何這樣寫優化
四、我恰好看到一本設計模式的書,嗯不錯,我想學學spa
是否是看上去都直戳你的心,好像確實是這樣的
不過我能夠這麼說,不管你出於哪種目的去學習,只要去學習總比不學要好,至於學了有沒有用,那就是你看下去的緣由咯
從書上摘話給大家看看
幫助咱們將應用組織成容易瞭解,容易維護,具備彈性的架構,創建可維護的OO系統,要訣在於隨時想到系統之後可能須要的變化以及應付變化的原則。
這麼複雜的解釋確定是不肯意看了,我用個人話來總結
一、設計模式能讓專業人之間交流方便,以下:
程序員A:這裏我用了XXX設計模式
程序員B:那我大體瞭解你程序的設計思路了
二、易維護
項目經理:今天客戶有這樣一個需求…
程序員:明白了,這裏我使用了XXX設計模式,因此改起來很快
三、設計模式是編程經驗的總結
程序員A:B,你怎麼想到要這樣去構建你的代碼
程序員B:在我學習了XXX設計模式以後,好像天然而然就感受這樣寫能避免一些問題
四、學習設計模式並非必須的
程序員A:B,你這段代碼使用的是XXX設計模式對嗎?
程序員B:很差意思,我沒有學習過設計模式,可是個人經驗告訴我是這樣寫的
上面就是我總結的設計模式的做用,我想聰明的你應該能理解我所表達的意思
我想不少人關心這個問題,確實我很關心,否則總感受本身學習完成以後,跟沒有學沒什麼區別
首先我不想和別人說的同樣:「設計模式是一種思想,是一種經驗,你寫多了天然就明白了」
我不否定,可是我以爲不是乾貨,聽了總很難過。
因此我總結了我本身的用法
一、若是你處於黃金級別(下面有提到)請在優化代碼的時候再使用設計模式!!!
個人理解是這樣的,首先在此,你對設計模式的理解並非很深刻,若是直接拿來用,可能會致使不少問題。因此你在寫代碼的時候,寧肯忘記你學過設計模式,而後你本身去寫。當你寫完了以後,你須要對你的代碼進行優化,那麼這個時候你就須要嘗試去找問題了。在你的代碼中是否有不少重複片斷,是否有不少冗長的代碼,一個類的職責是否過多,若是客戶提出修改你的代碼是否能進行維護和修改。此時你若是你發現有地方須要進行優化,而優化的方式有所參考的話,你就能夠進行使用了。
這樣的好處是,你明顯能感受到使用設計模式先後,你代碼的變化,以及這個設計模式的好處,在之後的工做中就有經驗了。
固然很差的地方是,明顯很累嘛,可是前期吃點苦,我以爲踩踩坑也沒什麼很差的。固然若是你是高手,那當這條沒看到~
二、請使用設計模式的專有命名
好比說,在一個地方你須要使用工廠模式,那麼你就在工廠類的名字後面加Factory,其餘的設計模式也是相似的
一個是爲了你本身之後維護的方便,一個是爲了別人協同工做的時候閱讀你代碼的方便,這樣大家交流就有了共同的語言
三、明白設計模式的做用,參考別人代碼中去使用會頗有效
若是你在使用一個設計模式前,請明白這個設計模式的做用是什麼
再者,如:當你看到MyBatis源碼中產生SqlSession對象使用工廠模式,那麼你先去想爲何它要這麼作,這樣作的好處是什麼,你的業務是否也是和他相同的情況呢?
當你瞭解了環境以後,你使用設計模式會變得很是有效
四、設計模式多用於複雜系統,方法設計,負責業務邏輯,增長代碼可維護性方面
你學習了這麼多東西,你確定會說,我在實際中也沒見到什麼人在他的代碼中使用設計模式呀。
確實在實際的項目中,其實若是不是很是複雜的項目基本上用不到設計模式,也沒有什麼特別的必要,不少時候,設計模式會出如今上面所說的狀況下,因此你也不須要奇怪。
漸漸的你有一天就會明白它的存在。
一、青銅:剛開始學編程不久,據說過什麼是設計模式
二、白銀:有很長時間的編程經驗,本身寫了不少代碼,其中用到了設計模式,可是本身殊不知道
三、黃金:學習過了設計模式,發現,哇,原來我已經在使用了,而且發現了一些新的模式挺好用的
四、鉑金:閱讀了不少別人寫的源碼,在其中看到別人設計模式精彩的使用因此學習了下來
五、鑽石:代碼寫着寫着,本身都沒有意識到使用了設計模式,就熟練的寫了下去
這個也只是我我的認爲的比較好的學習時間,僅供參考
面向對象思想紮實,且對於程序設計有本身認識見解的時候
能熟練使用別人的框架作一些簡單的項目
有過至少一個本身的完整項目
想進一步提高本身代碼認識水平能力的時候
一、首先經過書本,或者博客,瞭解熟知常見的設計模式
二、本身嘗試寫出關於這個設計模式的例子
三、嘗試在別人的代碼中找到這樣的設計模式進行學習
四、積累
正所謂「不積跬步,無以致千里」學習是一個積累的過程。
以後這個設計模式這個分類講慢慢整理我在閱讀源碼中所遇到的設計模式。爭取不斷更咯~
做者:LinkinStar