我首先提到面向对象的设计模式及其后果并不总是影响每个语言决策,即使在面向对象语言中也是如此 . 您当然可以找到比一种语言(Smalltalk)更容易实现的经典设计模式,而不是另一种语言(C) .
话虽这么说,我'm not sure I agree with the premise that a singleton instance should only be disposed at the end of an application. Nothing in the design pattern descriptions that I'读了Singleton(或Design Patterns: Elements of reusable Object-Oriented Software)提到这个作为这种模式的属性 . 单身人士应该确保在任何一个时刻只存在一个 class 的实例;这并不意味着只要应用程序存在就必须存在 .
我有一种感觉,在实践中,许多单身人士确实存在于应用程序的大部分生命中 . 但是,请考虑使用TCP连接与服务器通信的应用程序,但也可以以断开连接模式存在 . 连接时,您需要一个单例来维护连接信息和连接状态 . 断开连接后,您可能希望保留相同的单例 - 或者您可以处置单例 . 虽然有些人可能认为保持单例更有意义(我甚至可能在其中),但设计模式本身没有任何东西阻止你处理它 - 如果重新连接,单例可以被实例化再次,因为那个时刻没有它的实例存在 .
换句话说,您可以创建场景,使单身人士具有IDisposable是合乎逻辑的 .