Лучшие вопросы
Таймлайн
Чат
Перспективы
Отложенная инициализация
приём в программировании, когда некоторая ресурсоёмкая операция выполняется непосредственно перед тем, как будет использован её результа Из Википедии, свободной энциклопедии
Remove ads
Отложенная (ленивая) инициализация (англ. Lazy initialization) — приём в программировании, когда некоторая ресурсоёмкая операция (создание объекта, вычисление значения) выполняется непосредственно перед тем, как будет использован её результат. Таким образом, инициализация выполняется «по требованию», а не заблаговременно. Аналогичная идея находит применение в самых разных областях: например, компиляция «на лету» и логистическая концепция «Точно в срок».
Частный случай ленивой инициализации — создание объекта в момент обращения к нему — является одним из порождающих шаблонов проектирования. Как правило, он используется в сочетании с такими шаблонами как Фабричный метод, Одиночка и Заместитель.
Remove ads
Достоинства
- Инициализация выполняется только в тех случаях, когда она действительно необходима;
- Ускоряется начальная инициализация.
Недостатки
- Невозможно явным образом задать порядок инициализации объектов;
- Возникает задержка при первом обращении к объекту, что может оказаться критичным при параллельном выполнении другой ресурсоёмкой операции. Вследствие этого требуется тщательно просчитывать целесообразность использования «ленивой» инициализации в многопоточных программных системах, особенно — ОС.
Реализация
Реализовать данный шаблон можно несколькими различными вариантами:
- Lazy Initialization – Инициализация по требованию. Это самый простой способ – реализовать проверку поля на null и в случае необходимости заполнять его данными.
- Virtual Proxy – Виртуальный прокси-объект. Метод несколько усложнен проблемой идентификации объектов, т.к. вместо них, до инициализации, выступают заменители.
- Ghost – Фиктивный объект, Призрак. Это реальный объект с неполным состоянием.
- Value Holder – Диспетчер значения. Объект является оболочкой для некоторого значения. Также не самый лучший вариант в связи с проблемами типизации.
Ссылки
Русскоязычные сайты
См. также
![]() | В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads