design-patterns - 单态与单态

标签 design-patterns language-agnostic singleton

在什么情况下会使用单态模式而不是单例来维护全局对象?

编辑: 我知道什么是单例模式和单态模式。在很多场景中也实现了 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/

相关文章:

algorithm - 人名解析

algorithm - 寻找等权图的最短路径

ios - 可以将单例设置回零吗?

c# - 返回派生类型的接口(interface)

python - 打印模式递归

Python 列表元素模式

java - Web 应用程序中如何处理单例?

c# - 执行object.add 或repository.add 哪个更好?

algorithm - 在在线国际象棋游戏中,如何最大程度地减少时间控制滞后的影响?

c# - 正确使用共享静态 'Random' 单例实例?