關(guān)于這個(gè)問題,下面是一些同仁的觀點(diǎn):
觀點(diǎn)一:(單例)
單例模式比靜態(tài)方法有很多優(yōu)勢(shì):
首先,單例可以繼承類,實(shí)現(xiàn)接口,而靜態(tài)類不能(可以集成類,但不能集成實(shí)例成員);
其次,單例可以被延遲初始化,靜態(tài)類一般在第一次加載是初始化;
再次,單例類可以被集成,他的方法可以被覆寫;
最后,或許最重要的是,單例類可以被用于多態(tài)而無需強(qiáng)迫用戶只假定唯一的實(shí)例。舉個(gè)例子,你可能在開始時(shí)只寫一個(gè)配置,但是以后你可能需要支持超過一個(gè)配置集,或者可能需要允許用戶從外部從外部文件中加載一個(gè)配置對(duì)象,或者編寫自己的。你的代碼不需要關(guān)注全局的狀態(tài),因此你的代碼會(huì)更加靈活。
觀點(diǎn)二:(靜態(tài)方法)
靜態(tài)方法中產(chǎn)生的對(duì)象,會(huì)隨著靜態(tài)方法執(zhí)行完畢而釋放掉,而且執(zhí)行類中的靜態(tài)方法時(shí),不會(huì)實(shí)例化靜態(tài)方法所在的類。如果是用singleton, 產(chǎn)生的那一個(gè)唯一的實(shí)例,會(huì)一直在內(nèi)存中,不會(huì)被GC清除的(原因是靜態(tài)的屬性變量不會(huì)被GC清除),除非整個(gè)JVM退出了。這個(gè)問題我之前也想幾天,并且自己寫代碼來做了個(gè)實(shí)驗(yàn)。
觀點(diǎn)三:(
Good!)
由于DAO的初始化,會(huì)比較占系統(tǒng)資源的,如果用靜態(tài)方法來取,會(huì)不斷地初始化和釋放,所以我個(gè)人認(rèn)為如果不存在比較復(fù)雜的事務(wù)管理,用singleton會(huì)比較好。個(gè)人意見,歡迎各位高手指正。
拋磚引玉,請(qǐng)不吝賜教!
--------------------
WE準(zhǔn)高手
posted on 2008-01-22 10:46
大衛(wèi) 閱讀(20167)
評(píng)論(11) 編輯 收藏 所屬分類:
Java