Это называется отложенной загрузкой, потому что, как ленивый человек, вы откладываете выполнение того, чего не хотите. Напротив, это «нетерпеливая загрузка», когда вы загружаете что-то сразу, задолго до того, как это вам понадобится.
Если вам интересно, почему люди могут использовать отложенную загрузку, подумайте о приложении, запуск которого занимает LOOOOONG времени. Это приложение, вероятно, много загружается ... загружает вещи с диска, выполняет вычисления и прочее задолго до того, как оно когда-либо понадобится.
Сравните это с отложенной загрузкой, приложение запустится намного быстрее, но тогда, когда вам в первый раз нужно сделать что-то, что требует некоторой продолжительной нагрузки, может возникнуть небольшая пауза при первой загрузке. Таким образом, с отложенной загрузкой вы амортизируете время загрузки на протяжении всего выполнения вашего приложения ... и вы можете фактически сэкономить на загрузке вещей, которые пользователь, возможно, никогда не намеревается использовать.
Ленивая загрузка - это практика программирования, при которой вы загружаете или инициализируете объект только тогда, когда он вам впервые нужен. Это потенциально может значительно повысить производительность, особенно если в вашем приложении много компонентов.
Как обычно, в Википедии больше подробностей.
источник
Ленивая загрузка - это концепция, при которой мы откладываем загрузку единицы объекта до точки, где она нам нужна. Простыми словами загрузка объекта по запросу, а не загрузка объектов без надобности. Например, если у вас есть класс «Клиент», в котором агрегирован объект «Заказы». Итак, вы хотите загрузить данные о клиентах, но объекты заказов, которые вы хотели бы отложить, пока они не понадобятся вашему приложению.
Ниже приведено видео на YouTube, которое демонстрирует, как использовать отложенную загрузку, как мы можем реализовать отложенную загрузку, а также преимущества и недостатки этого.
http://www.youtube.com/watch?v=2SrfdAkwmFo
источник
Определение википедии Ленивая загрузка - это шаблон проектирования, обычно используемый в компьютерном программировании, чтобы отложить инициализацию объекта до момента, когда это необходимо. ...
http://en.wikipedia.org/wiki/Lazy%20loading
источник
Термин отложенная загрузка обычно используется, когда речь идет об объектно-реляционных преобразователях. Если вы используете ADO.NET напрямую, вы всегда получаете активную загрузку (т. Е. Всегда загружает только то, что вы указали).
OR-mappers, такие как nHibernate, поддерживают возвращение прокси-объектов, которые «заполняются» правильными данными только тогда, когда вы обращаетесь к данным. Таким образом вы загружаете только те данные, которые действительно используете. Это полезная функция, когда вы указываете множество отношений между объектами, которые могут быть загружены из базы данных, вы не хотите, чтобы OR-mapper загружал все связанные объекты и объекты, связанные со связанными объектами, и так далее. Это может привести к загрузке всей вашей базы данных.
Эту проблему можно предотвратить также путем тщательного проектирования вашей объектной модели. (использование агрегатов и загрузка только агрегированных корней, как в дизайне, управляемом доменами, - это способ обойти это без использования ленивой загрузки).
Ленивая загрузка может привести к тому, что or mapper будет выполнять множество обращений к малой базе данных вместо того, чтобы получить все данные, которые вам нужны один раз. Это также может привести к проблемам с производительностью.
источник
Вот пример реального кода Python, который я написал:
По сути, у меня есть класс Item, который представляет предмет в нашем инвентаре. Общее количество предметов, которые у нас есть, - это количество, которым мы владеем, плюс сумма всех предметов, которые мы заимствуем из различных источников. Все эти числа хранятся в нашей базе данных, и было бы бессмысленно рассчитывать их до тех пор, пока не будет фактически запрошена общая сумма (поскольку часто элементы будут использоваться без запрашиваемой суммы).
Таким образом, свойство total проверяет, существует ли поле _total. В противном случае код свойства запрашивает базу данных и вычисляет ее, а затем сохраняет значение в поле _total, чтобы его не нужно было повторно вычислять при следующем запросе.
источник
Ленивая загрузка: вы не тратите свое время (или память) на ненужные вещи. Затем, когда вам это нужно, это займет больше времени, но это нормально.
Пример из жизни: вместо того, чтобы на самом деле изучать этот французский разговорник, вы учите фразы по одной по мере необходимости. Когда это имеет смысл? Если вы собираетесь быть во Франции только на короткое время (т.е. вам не понадобится много фраз) или если вам нужно очень скоро уехать. Если вы там два года и / или у вас много времени на учебу, то было бы гораздо эффективнее просто выучить весь разговорник заранее (жадная загрузка).
[Вдохновленный Атомом, как учила Венера на WKRP в терминах банды .]
источник
Ленивая загрузка - это термин, часто используемый в базах данных для обозначения концепции загрузки частей требуемой информации только тогда, когда это необходимо.
Предположим, вам нужна запись, в которой объединены несколько таблиц. Если вы загрузите все сразу, это займет больше времени, чем если бы вы загрузили, скажем, только основную таблицу. При использовании отложенной загрузки остальная информация будет извлечена только в случае необходимости. Так что в определенных сценариях это фактически «эффективная загрузка».
Другие типы «загрузки»:
источник
это шаблон дизайна.
Ленивая загрузка: до тех пор, пока ваш код не потребует некоторой операции, выполняемой конкретным объектом, объект не инициализируется, а после инициализации он не повторно инициализирует объект, а использует ранее инициализированный объект.
Это делает ваш код намного более эффективным и помогает управлять использованием памяти.
Примеры применения отложенной загрузки:
Ghost Lazy initialization Держатель значения
источник
Некоторые из преимуществ отложенной загрузки:
источник
Примером отложенной загрузки может быть сетка или таблица с большим количеством данных на веб-странице для просмотра того места, где приложение загружает только размер точки обзора браузера пользователя на тот момент. Когда они прокручивают страницу вниз, чтобы просмотреть больше контента или данных, в этот момент в представление будет загружено больше данных.
Это становится все более распространенным шаблоном визуального / интерактивного проектирования, в том числе через ajax или jQuery.
И, как упоминалось выше, противоположной будет загрузка с нетерпением, когда вы не учитываете клиента, что потенциально может снизить производительность.
источник
Lazy<T>
теперь является частью C # 4.0 - в MSDN есть хорошая страница, объясняющая эту концепцию.источник
Согласно geeksforgeeks, отложенная загрузка - это шаблон проектирования программного обеспечения, при котором инициализация объекта происходит только тогда, когда это действительно необходимо, а не раньше, чтобы сохранить простоту использования и повысить производительность.
https://www.geeksforgeeks.org/lazy-loading-design-pattern/
источник