Если вы используете TypedFactoryFacility
в Windsor для создания фабрик на основе интерфейса, сама фабрика может быть зарегистрирована как Transient. Получается, что фабрика затем выпустит все временные объекты, которые она создала, когда сама фабрика будет утилизирована после выпуска.
container.AddFacility<TypedFactoryFacility>();
container.Register(
Types.FromThisAssembly().BasedOn<IFactory>().Configure(
x => x.AsFactory()).LifestyleTransient());
Это означает, что если я создам автоматически сгенерированные фабрики как временные, это аккуратно позволит мне забыть о Release
ing объекте, созданном из фабрики (конечно, пока я управляю временем жизни самой фабрики). Время жизни такой временной фабрики будет привязано к какому-то другому временному объекту, поэтому, когда этот объект освобождается, освобождается и фабрика, и все, что эта фабрика создала.
Лично я ненавижу помнить о явном Release()
объектах, и это сильно очищает код, так что это меня очень радует. Но вопрос в том, является ли это разумной практикой? Все это кажется слишком простым.
Есть ли недостаток в создании нового экземпляра фабрики каждый раз, когда требуется фабрика?
Я копаю себе ужасную яму?