我发现了一些有趣的东西,当我调试其他东西时,我注意到了运气。我正在应用MVP模式,我制作了一个单独的控制器,可以在所有演示文稿中共享。
突然我发现有些事件在第一次回发时被调用一次,如果有两次回发则被调用两次,如果有100次回发则被调用100次。
因为Singleton基于一个静态变量来保存实例,而静态变量存在于回发之间,我假设它将连接一次并为每次回发重新连接而连接事件。
我认为在Web应用程序中应用单例之前我们应该三思而后行,否则我会错过一些东西?
谢谢
答案 0 :(得分:10)
我会考虑在任何地方使用Singleton。
许多人认为Singleton是反模式。
有些人认为它是一种反模式,判断它过度使用,在实际上不需要类的唯一实例的情况下引入了不必要的限制,并将全局状态引入应用程序。
维基百科上有很多参考文献可以讨论这个问题。
需要单身人士是非常罕见的,我个人认为他们与全局变量一样。
答案 1 :(得分:6)
由于共享状态,在多线程应用程序(不仅是单例模式)中使用静态对象时,您应该三思而后行。应该应用适当的锁定机制,以便同步对共享状态的访问。如果不这样做,可能会出现一些非常难以发现的错误。
答案 2 :(得分:4)
我已经在我的网络应用程序中使用Singletons很长一段时间了,他们总是为我做得很好,所以说他们是一个坏主意真是一个相当困难的声明。当使用Singletons时,主要思想是保留所有特定于会话的信息,并将它们更多地用于全局或应用程序数据。要避免它们,因为它们“坏”实际上并不太聪明,因为它们在正确应用时非常有用。