El patrón de diseño Singleton

El patrón de diseño Singleton es uno de los más sencillos y utilizados de los que se presentaron en el catalogo de los Gang Of Four (y no es del grupo de lo que hablamos ;-)) y lo que pretende es asegurar que solo exista una instancia de una clase.

El patrón Singleton, se implementa creando un método que cree una instancia de un objeto, solo si esta no está creada. Para asegurar esto, el constructor deberá ser privado.

Este patrón lleva a cabo su propósito por:

  • La clase es la responsable de la creación de la instancia
  • Permite el acceso global a dicha instancia mediante un método de clase.
  • El constructor es privado para que no se instancia directamente.

Las situaciones más habituales de aplicación de este patrón son aquellas en las que dicha clase controla el acceso a un recurso físico único (como puede ser el ratón o un archivo abierto en modo exclusivo) o cuando cierto tipo de datos debe estar disponible para todos los demás objetos de la aplicación. Sigue leyendo

Anuncio publicitario

El patron de diseño Lazy Loading

El Lazy Loading es un patron de diseño util y simple que se basa en ir cargando los distintos componentes de una clase cuando los vamos usando.

Por ejemplo, supongamos que tenemos una clase que nos gestiona una lista e links, y esta tiene este aspecto:

public class Links
{
#region members
private string _title;
private int _quantity;
private
LinkCollection _linkList;
#endregion
#region properties
public string Title
{
get { return _title; }
set { _title = value; }
}
public int Quantity
{
get { return _quantity; }
set { _quantity = value; }
}
public LinkCollection LinkList
{
get { return _linkList; }
set { _linkList = value; }
}
#endregion
}

Si implementamos el lazy loading, el valor de la colección de links inicialmente sería nulo, y en el momento a que usamos la propiedad con la que lo exponemos, sería cuando cargamos la susodicha colección.
Esta implementación, tendría este aspecto:

public LinkCollection LinkList
{
get
{
if(_linkList == null)
{
_linkList = new LinkList();
}
return _linkList;
}
set { _linkList = value; }
}

Como veis es un patron simple, util y facil de implementar y con el ganareis un poquito en el performace de vuestras aplicaciones.

Enlaces relacionados

Otros patrones de diseño en A deshoras

Si os surge alguna duda, no dudeis en dejar comentarios que respondere gratamente.