Ram*_*Ram 4 .net garbage-collection dispose design-patterns
我正在使用Factory模式来创建类的.NET对象.我还需要确保在应用程序终止之前应该处理所有这些对象.
我在哪里以及如何处理工厂模式创建的对象?我应该在我正在获取工厂创建的对象的类中进行处理吗?
当您的工厂创建新IDisposable对象时,调用者通常应该处理这样的对象.一个可取的模式如下:
using (var instance = Factory.CreateInstance(someArg))
{
// use the instance
}
Run Code Online (Sandbox Code Playgroud)
当您的工厂使用某个内部池时,仍然建议让调用者处理该对象,但在这种情况下,只要实例处理完,它就应该返回到池中.然而,这样的设计要复杂得多.
为什么要在应用程序终止之前处理它们?这是因为他们持有非托管资源吗?
如果是这种情况,只需实现 IDisposable 并在 Dispose 方法中执行清理工作,剩下的交给 .Net 处理。