你所學習的設計模式到底有什么用?到底怎么用?


前言

經過大約兩個月的磨蹭,我終於是把設計模式打下來了。

具體詳細在:http://www.cnblogs.com/linkstar/category/1087887.html

那么當我學習完成之后,所想到的第一件事,也就是你們標題上面所看到的一樣

學設計模式到底有啥用啊?在我學習完成之后為了寫這個總結也是抓耳撓腮了一遍

所以在此需要對學習進行一個總結,這也是一個個人的總結,如果有不對的地方也請原諒

 

普遍的目的

我所能想到的普遍的目的有下面幾個

1、別人都說要學,別人都說好,所以我要學

2、面試會被問,所以必須學

3、讀源碼時看到別人在用,不學看不懂源碼為什么這樣寫

4、我剛好看到一本設計模式的書,嗯不錯,我想學學

是不是看上去都直戳你的心,好像確實是這樣的

不過我可以這么說,無論你出於哪一種目的去學習,只要去學習總比不學要好,至於學了有沒有用,那就是你看下去的原因咯

 

設計模式的作用

從書上摘話給你們看看

幫助我們將應用組織成容易了解,容易維護,具有彈性的架構,建立可維護的OO系統,要訣在於隨時想到系統以后可能需要的變化以及應付變化的原則。

這么復雜的解釋肯定是不願意看了,我用我的話來總結

1、設計模式能讓專業人之間交流方便,如下:

程序員A:這里我用了XXX設計模式

程序員B:那我大致了解你程序的設計思路了

2、易維護

項目經理:今天客戶有這樣一個需求…

程序員:明白了,這里我使用了XXX設計模式,所以改起來很快

3、設計模式是編程經驗的總結

程序員A:B,你怎么想到要這樣去構建你的代碼

程序員B:在我學習了XXX設計模式之后,好像自然而然就感覺這樣寫能避免一些問題

4、學習設計模式並不是必須的

程序員A:B,你這段代碼使用的是XXX設計模式對嗎?

程序員B:不好意思,我沒有學習過設計模式,但是我的經驗告訴我是這樣寫的

 

上面就是我總結的設計模式的作用,我想聰明的你應該能理解我所表達的意思

 

設計模式到底怎么用

我想很多人關心這個問題,確實我很關心,不然總感覺自己學習完成之后,跟沒有學沒什么區別

首先我不想和別人說的一樣:“設計模式是一種思想,是一種經驗,你寫多了自然就明白了”

我不否認,但是我覺得不是干貨,聽了總很難過。

所以我總結了我自己的用法

1、如果你處於黃金級別(下面有提到)請在優化代碼的時候再使用設計模式!!!

我的理解是這樣的,首先在此,你對設計模式的理解並不是很深入,如果直接拿來用,可能會導致很多問題。所以你在寫代碼的時候,寧可忘記你學過設計模式,然后你自己去寫。當你寫完了之后,你需要對你的代碼進行優化,那么這個時候你就需要嘗試去找問題了。在你的代碼中是否有很多重復片段,是否有很多冗長的代碼,一個類的職責是否過多,如果客戶提出修改你的代碼是否能進行維護和修改。此時你如果你發現有地方需要進行優化,而優化的方式有所參考的話,你就可以進行使用了。

這樣的好處是,你明顯能感覺到使用設計模式前后,你代碼的變化,以及這個設計模式的好處,在以后的工作中就有經驗了。

當然不好的地方是,明顯很累嘛,但是前期吃點苦,我覺得踩踩坑也沒什么不好的。當然如果你是高手,那當這條沒看到~

2、請使用設計模式的專有命名

比如說,在一個地方你需要使用工廠模式,那么你就在工廠類的名字后面加Factory,其他的設計模式也是類似的

一個是為了你自己以后維護的方便,一個是為了別人協同工作的時候閱讀你代碼的方便,這樣你們交流就有了共同的語言

3、明白設計模式的作用,參考別人代碼中去使用會很有效

如果你在使用一個設計模式前,請明白這個設計模式的作用是什么

再者,如:當你看到MyBatis源碼中產生SqlSession對象使用工廠模式,那么你先去想為什么它要這么做,這樣做的好處是什么,你的業務是否也是和他相同的狀況呢?

當你了解了環境之后,你使用設計模式會變得非常有效

4、設計模式多用於復雜系統,方法設計,負責業務邏輯,增加代碼可維護性方面

你學習了這么多東西,你肯定會說,我在實際中也沒見到什么人在他的代碼中使用設計模式呀。

確實在實際的項目中,其實如果不是非常復雜的項目基本上用不到設計模式,也沒有什么特別的必要,很多時候,設計模式會出現在上面所說的情況下,所以你也不需要奇怪。

漸漸的你有一天就會明白它的存在。

 

學習設計模式的幾個階段

1、青銅:剛開始學編程不久,聽說過什么是設計模式

2、白銀:有很長時間的編程經驗,自己寫了很多代碼,其中用到了設計模式,但是自己卻不知道

3、黃金:學習過了設計模式,發現,哇,原來我已經在使用了,並且發現了一些新的模式挺好用的

4、鉑金:閱讀了很多別人寫的源碼,在其中看到別人設計模式精彩的使用所以學習了下來

5、鑽石:代碼寫着寫着,自己都沒有意識到使用了設計模式,就熟練的寫了下去

 

學習的時間

這個也只是我個人認為的比較好的學習時間,僅供參考

面向對象思想扎實,且對於程序設計有自己認識看法的時候

能熟練使用別人的框架做一些簡單的項目

有過至少一個自己的完整項目

想進一步提升自己代碼認識水平能力的時候

 

學習的方式

1、首先通過書本,或者博客,了解熟知常見的設計模式

2、自己嘗試寫出關於這個設計模式的例子

3、嘗試在別人的代碼中找到這樣的設計模式進行學習

4、積累

 

正所謂“不積跬步,無以至千里”學習是一個積累的過程。

之后這個設計模式這個分類講慢慢整理我在閱讀源碼中所遇到的設計模式。爭取不斷更咯~

 

 

 

 

作者:LinkinStar

轉載請注明出處:http://www.cnblogs.com/linkstar/p/7859980.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM