Является ли ленивый экземпляр просто еще одним именем для прокси-шаблона? - PullRequest
2 голосов
/ 26 января 2012

Какая разница в этих?Я не могу найти такой «ленивый экземпляр», как шаблон здесь и там , но почему-то я чувствую, что ленивый экземпляр - просто еще один термин для шаблона.

Ответы [ 4 ]

2 голосов
/ 27 января 2012

Нет, хотя вы можете использовать ленивую реализацию внутри прокси-сервера, на самом деле это не связанные понятия.

Ленивый экземпляр

getBar() {
  if (bar == null)
    bar = new Foo();
  return bar;
}

Proxy

getBar() {
   return realObject.getBar();
}

Прокси с ленивым созданием

getBar() {
  if (realObject == null)
    realObject = new Foo();
   return realObject.getBar();
}
1 голос
/ 26 января 2012

Нет, отложенная инициализация не является еще одним термином для прокси. Вы можете использовать прокси для реализации отложенной инициализации, но не все прокси являются отложенной инициализацией.

1 голос
/ 26 января 2012

Нет, они не одно и то же.В двух словах:

Ленивая инициализация - это когда вы ждете, пока вам что-то понадобится, прежде чем вы создадите это.

Шаблон прокси - это когда вы управляете доступом к базовому объекту.Шаблон прокси может использовать ленивую инициализацию для создания прокси-объекта, но это не обязательно.

Например, в моем коде JavaScript у меня есть что-то вроде

if (!this._pane ) this._pane = ... // create pane lazily
// now use pane

, которое создаетпанель, которую я собираюсь показать только тогда, когда мне это нужно.Это позволяет избежать затрат на создание панели до тех пор, пока пользователь не достигнет ее (чего они могут даже не получить). Это ленивая инициализация.

Шаблон прокси может использовать ленивую инициализацию, но это не другаясрок для этого.

0 голосов
/ 26 января 2012

Нет, с прокси вы работаете с промежуточной вещью и действительно не представляете, что он делает за кулисами. С ленивым init вы работаете с реальным объектом (он просто не создается, пока не понадобится).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...