单例模式模型适用于哪些情况?

6
我知道什么是单例模式和单态模式以及如何实现它们。虽然我可以看到单例模式的许多用途,但我无法想象在实际情况下只有一个类实例存在于幕后,但我却希望让用户创建我的类的多个实例的情况。

有人能帮帮我吗?我知道出于几个原因,人们应该避免使用这两种模式,但从理论上讲,单态模式会出现什么问题呢?

谢谢


从未听说过单态模式。然而,我想它可以用于一些共享资源,就像单例模式一样。下面的链接似乎提供了一个很好的例子,同时避免了更复杂的模式,比如观察者模式: http://www.devx.com/getHelpOn/10MinuteSolution/16361 - James P.
1
请参见http://c2.com/cgi/wiki?MonostatePattern。 - trashgod
1个回答

4
Monostate,在我看来,不是你在应用程序级别上可能实现的模式,但在基础设施级别上可能会有用。 这篇关于Alex Martelli在Python中展示该模式的评论 提供了一个说明性的例子。
考虑一个DCOM或.NET远程调用的场景,在这种情况下,我们在服务器上有一个表示名为Bob的人的对象。 Bob不是单例,因为Bob不是唯一的人。 但是,几个客户端可能同时与Bob通信。 在每种情况下,客户端没有对Bob的直接引用(Bob位于不同的地址空间或不同的计算机上),而是拥有一个代理对象。 而该代理对象是特定客户端本地的。
因此,我们有多个代理对象,每个代理对象都具有不同的身份,但每个代理对象都代理了Bob服务器对象的状态和行为--因此共享状态和行为。如果客户端Alice更新Bob的状态(通过调用她的代理对象上的方法),则客户端Carol将在调用她的代理对象上的方法时看到Bob的行为发生变化。Alice和Carol的代理对象没有相同的对象身份,但具有相同的状态和行为:两者都代表Bob。这两个代理展示了单态模式。
整个线程值得阅读以获得更详细的讨论,但对我来说,以上内容是重点。)

这正是我想要的答案! - devoured elysium

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接