是否有必须使用单一设计模式的场景(除了使用单例之外别无选择)?

时间:2017-03-09 06:05:53

标签: design-patterns

我正在寻找一种除了单身模式之外别无选择的情况。

有可能出现这种情况吗?请提供一个你实际面临的例子。

3 个答案:

答案 0 :(得分:2)

<强> TL; DR
没有&#34;没有替代品&#34;单身。

更长的版本
Singleton是一种设计模式,因此它有助于解决问题。 单身人士试图解决的问题是当你想要只创建一个类的一个实例时。为什么要限制实例数?可能有很多原因,仅举几例:

  1. 创建/维护每个实例都非常昂贵,我们希望节省资源
  2. 我们使用来自应用程序中不同位置的相同资源,我们需要一种简单的机制来处理它,而无需进入复杂的解决方案(例如,使用同步)。
  3. 创建多个对象不仅昂贵(#1)而且令人困惑且难以维护,例如连接池
  4. 回到你的问题,Singleton,作为一种设计模式(一种工具),可以在适当的时候使用(比如锤子 - 你可以用它来敲钉子,但你总能发现另一种选择,例如石头,并用它来击中同一个钉子)。

    总而言之,没有任何情况下它绝对是实现目标的唯一途径(没有任何替代方案)。

答案 1 :(得分:0)

我在使用pureMVC的应用程序中使用了单例(实际上是其中几个)。我们对这个框架引入的复杂性感到不满(通过mvc层跟踪方法调用变得复杂和分层)。因此,我们使用中央单体作为介体,以更好地将层彼此分开。 我在在线足球队商店系统中使用了单身模式。我们将单例模式应用于ShoppingCart类。

每个应用程序实例只需要一个购物车实例。所以单身人士似乎最适合这种情况

答案 2 :(得分:0)

这是一种尝试理解它的简单方法。

您是否听说过&#34;全局变量&#34;? Singleton是一个类的实例,其作用类似于全局变量。您不希望它多次实例化。对它的所有访问都必须是同一个实例。