我們發現設計模式在Java社區很流行,但是在C++社區卻沒有那么被關注,甚至有點被排斥,究竟是什么原因造成這個差異的呢?
昨天和同事討論這個問題,最后得出幾點原因:
(1)C++內存需要自己管理,所以有些模式在C++里使用不是那么方便,但是Java不用關心內存,所以在Java里的使用設計模式有天生的優勢。隨著shared_ptr, weak_ptr, unique_ptr等加入C++11,相信這方面會有所改進。
(2)在Java的類庫體系中,很多設計本身就是基于設計模式的,所以在調用Java類庫時,你會不知不覺地使用設計模式,這樣導致你在設計自己的接口時也會使用設計模式。
(3)C++一般被用來解決一些比較底層的問題,所以用C++時,我們更多的關心是如何實現某個feature; 但是Java借助其豐富的類庫,實現feature往往不是問題,所以他們有更多精力關注設計。
(4)設計模式一般要間接層,會造成性能的損失,而C++應用的場合往往比較強調性能。對于這個問題,如果你的程序更注重性能(比如內核),確實不應該引入太多間接層;但是如果你的程序更注重可擴充性和可維護性,你就該考慮設計模式了。
(5)C++社區的很多程序員是從c甚至匯編轉過來的,所以這些人更習慣面向過程的設計方式,即使用C++也只是拿來封裝一些簡單的類,用不到設計模式。
(6)C++支持多種編程模型,包括面向過程,面向對象,基于對象,泛型編程等,設計模式主要是基于面向對象的,而Java只支持面向對象開發。
最后貼張某校的招生海報,你看看究竟是C, 還是C++?你是怎么看設計模式在C++社區的使用情況呢?

posted on 2012-06-14 09:22
Richard Wei 閱讀(5360)
評論(13) 編輯 收藏 引用 所屬分類:
設計模式