論: 設計模式是不是每天要用?
對於「設計模式是不是每天要用?」這個問題,我的看法是,能用就用。
在我看來,模式的主要服務物件不是設計,而是交流。
這一點我記得gof模式書是有說過,但不是很強調。
而各種模式書的模式表述法為: 提出問題,然後用模式解決。
結果許多設計者就把自己的問題與之對照,然後套用對應模式解決問題。
包括我自己,以前也是這樣做的。模式成為了設計的工具。
其實,最初的模式產生於設計之後,相類似的解決方案總結才產生了模式。
如果沒有模式的概念,你同樣能作出問題的解決方案。
模式最有用的地方應該是交流。
表達乙個設計最簡潔的方法就是用乙個或幾個模式概要之。
如對乙個系統你這樣描述:它是乙個管道模式系統,
資料以檔案方式進入後,經過a,b,c處理,最終流入d。
前提是交流的各方都要對模式有所熟悉。
程式設計師a:報表這塊怎麼設計?
架構師:用乙個possibility模式。
程式設計師a:請問什麼是possibility模式?
架構師就必須解釋什麼是possibility模式。
在對模式的理解上達成一致的情況下,才能有效利用模式進行交流。
在傳統的設計中,模式大概是很有用的,它提供了靈活的設計,把可變性提出另一層次進行處理。
而在現在流行的靈巧式開發中,設計與**交替進行,模式對於設計的幫助就大大減小了。
因為設計處於不斷的演化中,不是先定模式再有設計,而是先有了設計,再看到模式。
模式不是作為設計的指導,而成為設計演化的結果。
你在一次設計重構之後大呼:「現在我們已經進化到mvc模式了!」,而不是一開始就決定要應用mvc。
有了模式,你可能會覺得套用模式會使設計變得簡單,而且「專業」。
在有些情況下,我覺得還是擯棄模式才會有簡單的設計。
我有過多次經驗,將原有的模式通過重構,進行簡化,去除不必要的類層次,
結果是僅用簡單的繼承或組合就能解決問題。
仔細一看,模式是可以退化成更簡單的形式的。
例如,你不需要單件模式,乙個類只例項化一次就可成為乙個單件。
對於熟悉的人來說,應用模式簡化了設計,對於不熟悉的人來說,模式反而使設計更能理解。
還有乙個問題是,gof的模式書和其它模式書中僅對有一定複雜性的模式作了列舉,因為複雜才能顯示其水平。
而實際應用中,更有用的是書上未列舉的模式,或退化的模式。
如簡單的繼承,單一單向的組合,這些都是有用又好用的模式。
如mvc這類較大型的模式,應該是由框架提供,自己實現的機會不多。
即使你沒用框架,也可以不用mvc,同樣能實現資料展示功能。
簡單的模式可以逐步演化為複雜的模式。
原文 **:
設計模式是不是每天要用?
每天必用設計模式的公司:
第一天程式設計師a:報表這塊怎麼設計?
架構師:用乙個possibility模式。
程式設計師a:請問什麼是possibility模式?
第二天專案經理:昨天討論了,報表這塊怎麼設計?
程式設計師a:用乙個possibility模式。
專案經理:請問什麼是possibility模式?
第三天程式設計師b(新來的):請問報表這塊怎麼設計?
專案經理:用乙個possibility模式。
程式設計師b:請問什麼是possibility模式?
問題:* 剛畢業的大學生沒學過模式,還有好多人不熟悉。如果都要懂,會不會累死人?
* 設計模式不只gof的23個,其他人也總結了n多個。那麼多的模式,***我不一定懂,我懂的你不一定懂,怎麼交流?
* 今天流行這個模式,明天那個模式消亡,我們是為了模式而生存嗎?
* 大師們都懂模式嗎?他們會不會因為不懂模式而幹不了活,丟掉飯碗?bjarne strustroup, stan lippman, danny thorpe, brian kernighan, peter coad, knuth, andrei alexandrescu, steve mcconnell, herb sutter, anders hejlsberg, dennis ritchie, ...
建議:* 學校中開設設計模式課,但類似於資料結構,只教授經過歷史洗禮、非常經典的模式;
* 將模式提交給標準組織,產生標準模式。學校裡只教授標準模式。
設計模式是不是每天要用?
每天必用設計模式的公司 第一天程式設計師a 報表這塊怎麼設計?架構師 用乙個possibility模式。程式設計師a 請問什麼是possibility模式?第二天專案經理 昨天討論了,報表這塊怎麼設計?程式設計師a 用乙個possibility模式。專案經理 請問什麼是possibility模式?第...
設計模式(為什麼要用設計模式)
在剛開始學設計模式的時候,設計模式 對於我來說是一種抽象的詞彙,學之前一直不明白所說的 設計模式是什麼 接觸了之後才逐漸了解。1.什麼是設計模式 我認為設計模式它是一種 程式設計長期發展的經驗和套路,並且中所周知的一套 方法和理念。也是我們編寫程式的基石。2.為什麼要用設計模式 設計模式就像蓋房子首...
那些不用上班的老人每天是不是很幸福?
我今年五十六歲,雖然年齡還不算太老,可由於自己身體的原因已不能自食其力了。由於二十四歲的兒子還在談女朋友暫時還沒有結婚,現在在女兒家做起了免費保姆,說是做保姆,也就是幹些自己力所能及的家務活。我和全職的女兒帶三個分別上小學和幼兒園的孩子,女婿經常在外打拼很少回來,免去了在一起相處的尷尬,感覺還算自在...