Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to dispose the objects created by factory pattern

I am using Factory pattern to create .NET objects of a class. I also need to make sure that all such objects should be disposed before application terminates.

Where and How can I dispose the objects created by factory pattern? Shall I dispose in the class in which I am getting the objects created by factory?

like image 525
Ram Avatar asked Dec 12 '22 22:12

Ram


2 Answers

When your factory creates new IDisposable objects, the caller should normally dispose such an object. An advisable pattern is the following:

using (var instance = Factory.CreateInstance(someArg))
{
    // use the instance
}

When your Factory uses some internal pool, then it is still advisable to let the caller dispose the object, but in that case, as soon as the instance is disposed, it should be returned to the pool. However, such a design is much more complicated.

like image 96
Steven Avatar answered Jan 05 '23 10:01

Steven


Why do you want to dispose them before the application terminates? Is this because they hold unmanaged resources?

If this is the case, just implement IDisposable and perform the cleanup in the Dispose method, and let .Net take care of the rest.

like image 41
Gerrie Schenck Avatar answered Jan 05 '23 10:01

Gerrie Schenck