為什麼設計模式java實現的書比較多,C++卻很少.
阿新 • • 發佈:2019-02-13
我們發現設計模式在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只支援面向物件開發。
(7)設計模式在比較大型的C++開源專案中用的還是比較多的,比如網路庫ACE,介面庫QT,遊戲引擎Orge, Irrlicht等。