fbpx
Wikipedia

Lazy loading

La carga diferida (en inglés lazy loading) es un patrón de diseño comúnmente usado en la programación informática que consiste en retrasar la carga o inicialización de un objeto hasta el mismo momento de su utilización. Esto contribuye a la eficiencia de los programas, evitando la precarga de objetos que podrían no llegar a utilizarse. El opuesto de la carga diferida es la carga previa, precarga o eager loading.

Implementaciones editar

Existen cuatro formas comunes de implementar la carga diferida: lazy initialization; virtual proxy; ghost y value holder. Cada uno tiene sus propias ventajas y desventajas.

Inicialización diferida editar

Con inicialización diferida, el objeto a ser cargado de manera diferida es originalmente asignado como un valor nulo y cada petición para el objeto verifica si es nulo y lo crea "sobre la marcha" antes de devolverlo, como puede verse en este ejemplo escrito en C#:

private int myWidgetID; private Widget myWidget = null;   public Widget MyWidget  {  get   {  if (myWidget == null)   {  myWidget = Widget.Load(myWidgetID);  }    return myWidget;  } } 

O con el operador coalescente para nulidad '??'

private int myWidgetID; private Widget myWidget = null;  public Widget MyWidget  {  get { return myWidget = myWidget ?? Widget.Load(myWidgetID); } } 

Este método es el más sencillo de implementar, sin embargo, si nulo es un valor legítimo, puede hacerse necesario usa un objeto como placeholder para indicar que no ha sido inicializado.

Proxy virtual editar

Es un objeto con la misma interfaz que el objeto real. La primera vez que su método es llamado carga el objeto real y lo delega.

Fantasma editar

Un "fantasma" es el objeto que se quiere cargar en un estado parcial. Pues solo contener el identificador del objeto, pero carga sus propios datos desde la primera vez que una de sus propiedades sea accedida. Por ejemplo, considere que el usuario está a punto de hacer una petición de contenido desde un formulario en línea. Al momento de la creación todo lo que sabemos es que se accederá a cierto contenido, pero que cómo o a qué contenido se desconoce aún. Ejemplo con PHP:

$usrData = array ( "UID" = > uniqid(), "requestTime" => microtime( true ), "dataType" => "", "request" => "", ); if (isset( $_POST['data'] ) && $usrData) { //... } 

Contenedor de Valor editar

Un Contenedor de Valor es un objeto genérico que se encarga del comportamiento de la inicialización diferida y aparece en lugar de los campos del objeto:

private ValueHolder<Widget> valueHolder;   public Widget MyWidget  {  get  {  return valueHolder.GetValue();  } } 

Véase también editar

Referencias editar

  •   Datos: Q6506159

lazy, loading, carga, diferida, inglés, lazy, loading, patrón, diseño, comúnmente, usado, programación, informática, consiste, retrasar, carga, inicialización, objeto, hasta, mismo, momento, utilización, esto, contribuye, eficiencia, programas, evitando, preca. La carga diferida en ingles lazy loading es un patron de diseno comunmente usado en la programacion informatica que consiste en retrasar la carga o inicializacion de un objeto hasta el mismo momento de su utilizacion Esto contribuye a la eficiencia de los programas evitando la precarga de objetos que podrian no llegar a utilizarse El opuesto de la carga diferida es la carga previa precarga o eager loading Indice 1 Implementaciones 1 1 Inicializacion diferida 1 2 Proxy virtual 1 3 Fantasma 1 4 Contenedor de Valor 2 Vease tambien 3 ReferenciasImplementaciones editarExisten cuatro formas comunes de implementar la carga diferida lazy initialization virtual proxy ghost y value holder Cada uno tiene sus propias ventajas y desventajas Inicializacion diferida editar Con inicializacion diferida el objeto a ser cargado de manera diferida es originalmente asignado como un valor nulo y cada peticion para el objeto verifica si es nulo y lo crea sobre la marcha antes de devolverlo como puede verse en este ejemplo escrito en C private int myWidgetID private Widget myWidget null public Widget MyWidget get if myWidget null myWidget Widget Load myWidgetID return myWidget O con el operador coalescente para nulidad private int myWidgetID private Widget myWidget null public Widget MyWidget get return myWidget myWidget Widget Load myWidgetID Este metodo es el mas sencillo de implementar sin embargo si nulo es un valor legitimo puede hacerse necesario usa un objeto como placeholder para indicar que no ha sido inicializado Proxy virtual editar Es un objeto con la misma interfaz que el objeto real La primera vez que su metodo es llamado carga el objeto real y lo delega Fantasma editar Un fantasma es el objeto que se quiere cargar en un estado parcial Pues solo contener el identificador del objeto pero carga sus propios datos desde la primera vez que una de sus propiedades sea accedida Por ejemplo considere que el usuario esta a punto de hacer una peticion de contenido desde un formulario en linea Al momento de la creacion todo lo que sabemos es que se accedera a cierto contenido pero que como o a que contenido se desconoce aun Ejemplo con PHP usrData array UID gt uniqid requestTime gt microtime true dataType gt request gt if isset POST data amp amp usrData Contenedor de Valor editar Un Contenedor de Valor es un objeto generico que se encarga del comportamiento de la inicializacion diferida y aparece en lugar de los campos del objeto private ValueHolder lt Widget gt valueHolder public Widget MyWidget get return valueHolder GetValue Vease tambien editarPatrones de diseno Proxy patron de diseno Evaluacion perezosaReferencias editar nbsp Datos Q6506159 Obtenido de https es wikipedia org w index php title Lazy loading amp oldid 153146547, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos