java中new與static分析

抱怨java的new浪費了太多的內存,應該大量的使用static
前半句在某些情況下正確,後半句絕對錯誤。

說這話的是完全不懂對象,完全沒有OO基礎知識,但是這些人還在從事Java/.NET等OO軟件開發,相當於外行人冒充內行,可見當前中國軟件業水平多麼低下。

爲什麼說這些程序員完全不懂OO呢?
因爲他們只知道對象兩個表面含義,卻不懂對象背後的含義,對象重要特徵是什麼?對象重要的特徵就是有生命的,有scope的,有生命週期的,這其實是一個很樸素的哲學思想,沒有永垂不朽的東西,任何物體都是有生命的。

既然,對象有生命,那就當然有生有死,在java中,對象什麼時候死已經無需我們操心,因爲有垃圾回收機制,我們程序員只要決定對象什麼時候生就可以,也就是對象什麼時候創建,以何種方式創建。

對象可以new方式創建,也可以使用創建模式創建,方式很多,Ioc模式的誕生,特別是自動配對auto wiring的Ioc誕生,讓對象的創建也無需我們來編碼了,這更大大解決程序員的軟件開發生產力,這也就是Jdon On Rails爲什麼快速的原因之一。

回到對象的生命週期上來,使用靜態實際就是變態的延長對象的生命週期,雖然也解放了程序員,無需程序員照顧對象創建,但是這是一種錯誤的解放,是一種雖然簡單,但是方向完全錯誤,可能導致更大性能陷阱的解決方式,這個我已經在單例是邪惡等帖子中反覆表述,因爲我們現在的軟件是一個多線程環境,如果你使用靜態,不但導致非OO系統,到處是長命百歲的對象,系統難於維護;更重要不小心就導致多線程變成單線程系統,也就是單用戶系統,某個時刻只能一個用戶操作這個系統。換句話說:就是系統緩慢,人操作一多就死機。

發佈了20 篇原創文章 · 獲贊 32 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章