Здравствуйте, zelenprog, Вы писали:
Z>Есть ли какие-либо шаблоны\методики\практики более "гибкого" выделения ресурсов в дополнение к конструктору класса?
Паттерн Builder.
Только не тот Builder, который в книжке GoF, а просто — вынесение настройки объекта в «предварительный» объект отдельного типа.
Z>1) Сначала нужно создать "пустой" объект, вызвать его конструктор. Объект создается, но пока не "захватывает" ресурсы. В таком состоянии объект не функционален.
1) Сначала создаёшь «пустой» изменяемый билдер.
Z>2) Затем нужно передать этому объекту необходимую информацию (установить значения его "ключевых" свойств), от которой зависит логика "захвата" ресурсов.
2) По мере того, как становится доступной информация, заполняешь билдер.
Z>3) И только теперь можно вызвать метод объекта, который выполнит захват ресурсов, назовем его InitializeResources().
3) Когда информации достаточно, то создаёшь интересующий тебя объект одним вызовом метода Build() или ToMyType(), проводя в нём инициализацию, передавая ресурсы в ктор исходного типа.
Z>В таком состоянии объект не функционален.
То есть вместо того, чтобы рассматривать состояние «не инициализирован» для объектов твоего типа, ты разделяешь их на объекты двух типов: «не функциональный» изменяемый билдер (он может только накапливать настройки) и по возможности неизменяемый рабочий объект.