2010-04-05 25 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