Есть известный шаблон IDisposable, который предназначен для освобождения ресурсов.
Он нужен по той причине, что деструктор (финализатор) не всегда корректно справляется со своей "работой".
У меня возник похожий вопрос, только не для освобождения, а для выделения ресурсов.
Причина в том, что бывают такие ситуации, когда конструктор не всегда может выделить необходимые ресурсы.
Например, в момент создания объекта нет достаточной информации для "полноценного" создания объекта.
Поэтому такие объекты приходится создавать в следующем порядке:
1) Сначала нужно создать "пустой" объект, вызвать его конструктор. Объект создается, но пока не "захватывает" ресурсы. В таком состоянии объект не функционален.
2) Затем нужно передать этому объекту необходимую информацию (установить значения его "ключевых" свойств), от которой зависит логика "захвата" ресурсов.
3) И только теперь можно вызвать метод объекта, который выполнит захват ресурсов, назовем его InitializeResources().
Конечно, можно передать параметры в конструктор. Но это не всегда удобно и не всегда возможно. Например, у меня сейчас есть ограничение, чтобы конструкторы классов были вообще без параметров.
Получается, нужен какой-то "шаблон" для выделения ресурсов, аналогичный по схеме IDisposable, но противоположный по значению.
Есть ли какие-либо шаблоны\методики\практики более "гибкого" выделения ресурсов в дополнение к конструктору класса?