Skip to content

Генератор экземпляров компонентов

Иногда возникает необходимость получить желудь-зависимость отложено. Например, по какому-то условию или с передачей произвольных параметров. Эту задачу можно решить через внедрение в желудь Поделки целиком, но умные книжки учат нас, что зависеть от глобального контекста приложения - это вообще-то фу-фу-фу и не надо так. Для уменьшения связывания полезного кода с инфраструктурным в ОСени есть дополнительная аннотация &Табакерка. Если ее навесить над полем или параметром метода, над которым уже висит &Пластилин, &Деталька или &Блестяшка, то вместо внедрения в поле или параметр непосредственно нужного значения будет внедрен специальный объект типа Табакерка, который позволяет достать желудь/детальку/блестяшку по требованию.

bsl
&Табакерка
&Пластилин
Перем ПроверяторВерсий;

Функция ЧтоНибудьОтложеноПроверить(Версия) Экспорт
    РеальныйПроверяторВерсий = ПроверяторВерсий.Достать();
    
    Возврат РеальныйПроверяторВерсий.Проверить(Версия);
КонецФункции

&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры

В примере выше в поле ПроверяторВерсий будет внедрен объект типа Табакерка, который позволит получить желудь ПроверяторВерсий по требованию.

В метод Табакерка.Достать() можно передать параметр-массив с прилепляемыми частицами, аналогично тому, как это делается для Поделка.НайтиЖелудь(ИмяЖелудя, МассивПрилепляемыхЧастиц). Таким образом, можно получить желудь с прилепленными к нему блестяшками или другими рассчитываемыми желудями.