那時,我除了郁悶還有納悶,郁悶的是這么偉大的書,這些家伙卻一致反映很難看懂,看不懂,還如何從中吸取豐富的營養,迅速提高軟件設計水平,從而提高產品質量?納悶的是為什么這些家伙會一致反映看不懂,而我自己卻沒有這樣的感覺呢?后來通過和這群家伙交流我才知道,他們不像我那樣擁有豐富的程序設計經驗,經歷過的東西太多(我先自吹自擂一番),因此在閱讀這本書時,從自己過去眾多的設計中挑選出相似的案例來進行對比,而他們卻很難有這么多的案例去擬合每個設計模式,沒有“實物”做參照物,閱讀、理解自然是一個痛苦而漫長的過程。如果我想幫助這群家伙的話,只有“翻譯”這本書,如何“翻譯”?用常見的實例,用程序員的“語言”來解釋設計模式,而不再使用原著中抽象的。
從那里開始呢?首先從回答兩個問題說起吧。
第一個是學習設計模式最好從那個設計模式開始?
第二個是我最喜歡那個設計模式?
我認為回答第一個問題可以反映出回答者的“心態”,而回答第二個問題則反映出回答者的“心境.我的答案是,學習設計模式最好從“適配器”開始,我最喜歡的設計模式是“策略”。先說反映心態的“適配器”,程序員在成長過程中都有這樣的極其相似經歷:在別人寫的代碼基礎上繼續,比如完善或者維護別人寫的程序。通常你我做的其實大同小異,先會去閱讀已經寫好的代碼,感覺差不多了,下步動作是什么?60%的人不是開始“繼續的”工作,而是開始改寫、甚至是重寫代碼,還有40%的人是在“繼續工作”,完成新東西的設計后,回頭再來改寫、甚至是重寫代碼。我敢打賭,只有不到10%的人會在別人的基礎上“繼續”工作。改寫、重寫的理由是什么,無非是別人寫的太土、太臭,不改寫、重寫,心里不舒服,更“好”的理由是,和我“繼續”的思路不同,比如接口不兼容,我寫不下去,因此只有改寫,改的太多,我又比較能干,因此干脆重寫!
其實……其實……下一個在你工作基礎上繼續工作的家伙,和你的想法一樣,你一樣土,一樣臭,他一樣比你高明,一樣會改寫、重寫你引以為自豪的代碼。唉,就因為是軟件,你我可以拿到源代碼,因此你我手才會癢,才會有改寫、重寫的奇怪念頭,想想硬件,自己沒那個本事,也沒有那個條件去重新設計、制造另一個主板,來實現一個滿足自己需要的接口。每次開發一個接口卡的時候,你我還不是老老實實按“規范”去設計接口,再按自己的需要做個“適配”處理?!同樣你有改寫API的沖動嗎,老實說我經常有,我特別討厭win32API的許多接口,羅嗦不說,還無法提供我想要的全部功能,麻煩死了。但我改不了,因為沒有本事改,也無法改。老實說,那些宣稱喜歡linux的家伙,肯定有一堆想“改進”linux內核的自負家伙,我就遇到好多好多。那么改寫、重寫的效果如何呢,老實說,我自己有很深的體會,步入管理崗位后體會更深,客氣點“條條道路通羅馬”吧,心情不佳的時候“50步笑100步”吧,還不說時間(你總不至于聰明到1秒鐘內修改完成吧)、成本(你改寫、重寫、測試的那段時間,你不會給老板說你不要工資吧)了。如果你心平氣和去對比,你會發現我說的絕對一點不夸張、過分。
說了這么一大堆,就是想說,如果你想提高自己的工作效率,你想做更有意義的事情,你不想重復去造一個別人已經造好的輪子的話,下次遇到在別人工作基礎上“繼續”這樣的“美差”的時候,首先要想到“適配器”設計模式,適配器設計模式太簡單了,簡單到我認為不需要說什么了,其實你能否有機會使用適配器模式,主要是看你的心態,我相信你一定能掌握他,不就是匹配個接口嘛。
文章來源于領測軟件測試網 http://www.kjueaiud.com/