小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用Singleton模式?給我一個理由先!

 grantbb 2005-07-18

Q: 在很多地方我都看到使用了Singleton類。我的問題是:較之一個包含static方法(methds)的類,使用Singleton具有什么優(yōu)點呢?

A: 不使用包含static方法的類而使用Singleton,其區(qū)別在于,后者可以帶來有效的面向?qū)ο笤O(shè)計。Singleton通常展示的是一種更清晰的方法。而一個包含static方法的類只不過是函數(shù)或公用子程序(utilities)的簡單羅列。

你會問,羅列一組函數(shù)有什么問題?

很簡單。羅列函數(shù),你就不是在進行面向?qū)ο缶幊?;你的工作實際上倒退到了傳統(tǒng)的面向過程的程序設(shè)計中。悄然之間,對象不再是程序的焦點,而你自己也陷入到以數(shù)據(jù)為中心的程序設(shè)計模式中。換句話說,你不再是向包裝了狀態(tài)和行為的對象發(fā)送消息,而是針對數(shù)據(jù)進行函數(shù)調(diào)用。公用子程序必然造成行為和數(shù)據(jù)完全分離,而這一點在面向?qū)ο笤O(shè)計中是絕不允許的。

也不是說完全不能使用公用子程序。面向?qū)ο蟮墓米映绦虼_實存在。有時也需要將對象當(dāng)作數(shù)據(jù)來處理。例如,我曾寫了一套公共子程序,用來將Java對象轉(zhuǎn)換成相應(yīng)的CORBA形式。很難將那些方法寫成一個類,因為它們確實沒有狀態(tài)信息;我也不想將轉(zhuǎn)換代碼嵌入到Java類中。然而,這確實容易帶來混亂。

對于系統(tǒng)中的某個類,如果想讓它無論什么時候只有一個實例存在,這種情況下可以使用Singleton。例如有這樣一個類,它提供對CORBA server的訪問,還要做到負載平衡。這時候就不要使用多個這樣的對象,因為每個對象都會和相同的server打交道。占用冗余資源當(dāng)然浪費。所以,對server的訪問最好集中到一個實例之中。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多