.NET中的设计模式---由吃龙虾想到的
作者: 倪大蝦 發表于 2010-07-18 18:10 原文鏈接 閱讀: 725 評論: 20
今天吃小龍蝦的時候忽然想到了以前一個湖北朋友講的蝦的故事.這位朋友是湖北人,據他說在他小時候他們那里很多蝦,特別是夏天雨后,滿地爬的都是.因為傳說那是美國對付中國的秘密武器,居然沒有人敢吃.后來偶然有人提了半桶換賣了5塊錢回來,慢慢的大家認識到蝦的價值,隨后就有了今天吃得五香小龍蝦.然而近幾年出現的"洗蝦粉"又讓人心有余悸.回想起昨天看到亞力山大<召集討論設計模式是語言表達能力低下的產物>一貼.突然發現設計模式和蝦居然有相似的命運.
?
設計模式從出現到發展,到普及再到今天,人們對它的認識也同樣經過了"陌生"->"認識使用"->"批評".設計模式在程序員心目的地位中也經歷了"新奇"->"圣經"->"懷疑".然而,不管人們如何認識龍蝦,從始至終蝦還是蝦,沒有變過.同樣,設計模式自出現現到今天,一樣沒有變,變得只是次第更新的軟件設計開發技術,變得只是一代又一代的程序員.
?
設計模式是20世紀60-70年代的軟件危機之后大規模軟件的發展的結果.這里有個問題,什么是設計模式.相比能夠真正回答正確的人不多,真正理解的人也不多,因此經歷的輝煌之后隨之而來的懷疑就不可避免了,不過也正是這些批判懷疑促進了設計模式更進一的發展.
?
什么是設計模式,我也無法給出權威的答案,不過我敢肯定,設計模式不是<gof23種設計模式>中的UML圖,也不是一行行的示例代碼,它有的只是一種思想,一種思考問題的方式,就像<加勒比海盜>中的<海盜法典>,它只是指導,而并非律法.
?
既然只是一種指導,那么在使用的時候就應當根據實際情況使用它或不使用它,用一種方法實現它或用另外一種方法實現它.指導告訴我們一個解決問題的方向,而例子告訴我們到達目的地眾多路徑中的一條,它可能是最優,也可能是最差.<gof23種設計模式>一書不僅詳細的表達了什么是設計模式,而且有很多生動的例子.這些例子用來具體說明每種設計模式.然而在今天看來,那些Smalltalk或C++的例子卻成了一幅無形的枷鎖,讓很多人去套用而不知道因地制宜的發散擴展.比如當不斷的用if ...else if選擇工廠或策略的時候,就不會想到在.NET中可以使用反射來去掉讓人生厭的if...else.
?
今天討論的是.NET中的設計模式.大家都知道設計模式出現時還沒有.NET,Gof不可能預見會有C#的出現,寫論文的時候也不可能知道有反射,委托,事件等技術的出現.因而亞歷山大同志單憑"比如C#內置了事件機制,那么Observer還有意思"就認為設計模式已過時就顯得過于武斷了.
????? .NET中有很多特性使得設計模式的實現更加簡單,然而并不是說一定要用這些特性來實現設計模式,,就好比有了乘法,有時候我們用加法實現1+1=2可能更好,你不能因此而否定了乘法.同樣,既然"事件"能夠實現"Observer"的效果,那么一個事件不正是一個Observer嗎?Observer不是加入到.NET中了嗎!它只不過換了個名字,本質沒有變.
?
所以說我們在用設計模式的時候首先應該深入挖掘語言的潛力,而后結合設計模式的思想,創造獨有的應用設計模式.或許在C++中實現一個Observer有很多行代碼,在.NET中一行即可.書中的例子只是學習的一種途徑,沒有創新,生搬硬套只能是鸚鵡學舌,邯鄲學步,最終也只是貽笑大方了.
評論: 20 查看評論 發表評論
百度期待您的加盟
最新新聞:
· 微軟不為外界所知的十件趣事(2010-07-18 22:58)
· 中國第2季搜索引擎市場規模達26億 百度破70%(2010-07-18 22:54)
· Facebook用戶數下周達5億 邀請用戶共享故事(2010-07-18 22:49)
· 開源的可視化編輯器 KindEditor 3.5.1 發布(2010-07-18 22:35)
· WordPress 陷入開源‘邊界’之爭(2010-07-18 17:47)
編輯推薦:揭秘Facebook背后的那些軟件
網站導航:博客園首頁??個人主頁??新聞??閃存??小組??博問??社區??知識庫
總結
以上是生活随笔為你收集整理的.NET中的设计模式---由吃龙虾想到的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: export function函数传参_
- 下一篇: 【如何选择到合适的天线-天线参数讲解 】