Генератор экземпляров компонентов
Иногда возникает необходимость получить желудь-зависимость отложено. Например, по какому-то условию или с передачей произвольных параметров. Эту задачу можно решить через внедрение в желудь Поделки
целиком, но умные книжки учат нас, что зависеть от глобального контекста приложения - это вообще-то фу-фу-фу и не надо так. Для уменьшения связывания полезного кода с инфраструктурным в ОСени есть дополнительная аннотация &Табакерка
. Если ее навесить над полем или параметром метода, над которым уже висит &Пластилин
, &Деталька
или &Блестяшка
, то вместо внедрения в поле или параметр непосредственно нужного значения будет внедрен специальный объект типа Табакерка
, который позволяет достать желудь/детальку/блестяшку по требованию.
&Табакерка
&Пластилин
Перем ПроверяторВерсий;
Функция ЧтоНибудьОтложеноПроверить(Версия) Экспорт
РеальныйПроверяторВерсий = ПроверяторВерсий.Достать();
Возврат РеальныйПроверяторВерсий.Проверить(Версия);
КонецФункции
&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры
В примере выше в поле ПроверяторВерсий
будет внедрен объект типа Табакерка
, который позволит получить желудь ПроверяторВерсий
по требованию.
В метод Табакерка.Достать()
можно передать параметр-массив с прилепляемыми частицами, аналогично тому, как это делается для Поделка.НайтиЖелудь(ИмяЖелудя, МассивПрилепляемыхЧастиц)
. Таким образом, можно получить желудь с прилепленными к нему блестяшками или другими рассчитываемыми желудями.