通常,每当我需要一个系统范围的对象时,我就使用了单例模式。 问题是,为什么我不应该将对象实现为静态并自然地获得单个对象行为?在单例因子对象上使用静态类型是否有任何缺点?
答案 0 :(得分:0)
静态类型是可测试的(单元)少得多。 单身人士可以传递(作为参数)并继承。
有关示例等,请参阅此文:
http://dotnetperls.com/singleton-static
通常,您应该避免使用系统范围的对象,因为这些对象表明您具有全局状态。 Singleton用于管理对共享资源(而不是状态)的访问。
我相信至少有一个GoF记录在案,说在他们的书中包含单身人士是一个错误,在许多情况下它被用作反模式。
答案 1 :(得分:0)
取决于您想要对象做什么。如果它只是在它上面调用方法,那么只需使用静态。如果你想传递对象,并用它做面向对象的东西,即多态,那么就用对象的方式来做。