2010-04-05 61 views
6

我知道Singleton或Monostate是什麼,以及如何實現它們。儘管我可以看到單身人士的許多用途,但我無法想象一種情況,即我想讓用戶創建儘可能多的課程實例,但實際上只有一個實際存在於幕後。Monostate模式模型有哪些情況?

有人可以幫我嗎?我知道由於幾個原因,我們應該遠離這兩種模式,但理論上,Monostate模型會出現什麼樣的問題?

感謝

+0

沒聽說過的Monostate格局。不過,我認爲它可以用於像Singleton這樣的共享資源。下面的鏈接似乎提供了一個很好的示例,同時避免了更復雜的模式,例如Observer: http://www.devx.com/getHelpOn/10MinuteSolution/16361 – 2010-04-05 03:48:50

+1

另請參見http://c2.com/cgi/wiki ?MonostatePattern – trashgod 2010-04-05 05:17:31

回答

3

的Monostate,我的眼睛,是不是你很可能會在應用程序級別實現模式,但可以在基礎設施的水平是有用的。 This comment on Alex Martelli's presentation of the pattern in Python提供了一個說明性的例子。

考慮一個DCOM或.NET遠程處理場景,其中服務器上有一個對象表示名爲Bob的Person。鮑勃不是一個單身人士,因爲鮑勃不是唯一的人。但是,有幾個客戶可能同時與Bob交談。在每種情況下,客戶端都沒有直接引用Bob(誰位於不同的地址空間或不同的計算機上),而是具有代理對象。並且該代理對象對於特定客戶端是本地的。因此,我們有多個代理對象,每個代理對象具有不同的標識,但每個都代理服務器對象的Bob的狀態和行爲 - 因此共享狀態和行爲。如果客戶端Alice更新Bob的狀態(通過調用其代理對象上的方法),則客戶端Carol將會看到Bob行爲(當她在其代理對象上調用方法時)的更改。 Alice和Carol的代理對象做的不是具有相同的對象標識,但做的具有相同的狀態和行爲:都表示Bob。這兩個代理展示了Monostate模式。

The whole thread是值得一讀的更詳細的討論,但上述對我來說是地方點擊進入焦點。)

+0

只是我尋找的那種答案! – 2010-04-05 09:48:43