在什么情况下会使用单态模式而不是单例来维护全局对象?
编辑: 我知道什么是单例模式和单态模式。在很多场景中也实现了 Singleton。只是想知道MonoState模式需要实现的场景(案例)。
例如。我需要在 Windows 窗体应用程序中维护每个屏幕的列列表。在这种情况下我可以使用单例字典。但是,我在静态全局变量中存储一个列表,并且我想提供索引器(因为如果键不存在,我需要动态添加新条目到列表中),我可以在其中指定 ScreenDetails.ScreenName 作为键并获取 ScreenDetails .ColumnsTable。由于索引器无法对静态类进行操作,因此我将模式更改为 Monostate。
所以我想知道还有哪些其他场景可能迫使用户使用 Monostate 而不是 Singleton。
最佳答案
monostate 和 singleton 是同一个奖章的两个面孔(全局状态):
- monostate 强制执行一种行为(所有类实例中只有一个值)
- 单例强制结构约束(仅一个实例)
单例使用不透明
即:
Singleton singleton = Singleton.getInstance();
单态使用是透明的
IE。:MonoState m1 = new MonoState();
MonoState m2 = new MonoState(); // same internal state of m1 (e.g. static)
关于design-patterns - 单态与单态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887317/