Sitio Web del poderoso ChicoDotNet

Sitio Web del poderoso ChicoDotNet es el lugar donde puedes aprender todo lo nuevo sobre desarrollo de aplicaciones para Windows, ASP .NET, SmartClient y adquirir los súper poderes que te da la mejor plataforma de creación de programas: Microsoft .NET

20070524

Patrones y antipatrones de arquitectura: Singleton

En esta ocasión iniciaré una serie de artículos acerca de patrones y antipatrones de arquitectura. Espero que les sea útil. Ejemplificaré utilizando VB.NET y C# en cada uno de los patrones.

Tipo de patrón

Creador de objetos

Objetivo

Asegura que una clase determinada únicamente tenga una instancia y da acceso global a ella.

Motivación

Es importante en muchos casos que una clase tenga una instancia única, esto por ejemplo aplica a manejadores de ventanas, sistemas de archivos y de manera más sencilla clases que tienen propiedades y métodos que se utilizan durante todas las actividades de un sistema una y otra vez llamadas desde muchas otras instancias, por ejemplo un proveedor de acceso a datos. Un mecanismo adecuado para lograr esto es que la clase por si misma se construya, se exponga globalmente a todo el ensamblado y evite que otras clases la puedan construir nuevamente.

Aplicación

Debe usarse el patrón Singleton cuando deba haber una sola instancia de una clase y esta pueda ser accedida desde un punto conocido por sus clientes y cuando esta instancia deba ser extendida por sub clases sin modificar su programación.

Estructura

Patrón singleton en VB .NET

Patrón singleton en C#

Participantes

Singleton

Colaboración

Los clientes accesan al singleton solamente a partir de su operación

Consecuencias

Los beneficios del uso del patrón Singleton son los siguientes:

  • Acceso controlado a una sola instancia
  • Espacio de nombres reducido
  • Permite extender la funcionalidad por medio de sub clases
  • Permite usar un numero variable de instancias solo cambiando la operación que concede acceso a la clase Singleton
  • Es más flexible que exponer operaciones estáticas de clase

Implementación

Un ejemplo de implementación puede ser un proveedor de acceso a datos multi-base de datos, este se extiende por medio de la implementación de interfases para incluir nuevas sub clases que acepten nuevos proveedores en el caso de nuevas versiones o cambios de plataformas, la lógica de negocio siempre trabajará con la instancia Singleton Datos y toda la operación nueva o modificada se podrá implementar fácilmente sin modificar el resto de la programación, además de encolar los procesos transaccionales.

Código de ejemplo

VB.NET

Imports System.Runtime.CompilerServices
Public Class Singleton
Private Shared _Instancia As Singleton
<MethodImpl(MethodImplOptions.Synchronized)>_
Private Sub New()
If _Instancia Is Nothing Then
_Instancia = New Singleton()
End If
End Sub
Public Shared ReadOnly Property Instancia() As Singleton
Get
Return _Instancia
End Get
End Property
End Class

C#

using System.Runtime.CompilerServices;
public class Singleton {
private static Singleton _Instancia;
[MethodImpl(MethodImplOptions.Synchronized)]
private Singleton() {
if (_Instancia == null){
_Instancia = new Singleton();
}
}
public static Singleton Instancia {
get {
return _Instancia;
}
}
}

Usos conocidos

Un ejemplo de usos conocidos es la relación entre las clases y sus respectivas metaclases y las interfases únicas en los patrones de fábrica abstracta, constructor y prototipo.

Patrones relacionados

Fabrica abstracta, Constructor, Prototipo

Etiquetas: , , , , ,

Escrito por Alfonso Lara Ramos @ 18:03

Busca Patrones y antipatrones de arquitectura: Singleton en Technorati | Guarda Patrones y antipatrones de arquitectura: Singleton en Yahoo | Guarda Patrones y antipatrones de arquitectura: Singleton en Google Bookmarks | Envía Patrones y antipatrones de arquitectura: Singleton a Furl | Envía Patrones y antipatrones de arquitectura: Singleton a Newsvine | Guarda Patrones y antipatrones de arquitectura: Singleton en Ma.gnolia.com | Envía Patrones y antipatrones de arquitectura: Singleton a Reddit | Envía Patrones y antipatrones de arquitectura: Singleton a BarraPunto | Envía Patrones y antipatrones de arquitectura: Singleton a Digg | Envía un Meme sobre Patrones y antipatrones de arquitectura: Singleton | Guarda Patrones y antipatrones de arquitectura: Singleton en del.icio.us | Envía Patrones y antipatrones de arquitectura: Singleton a Fresqui | Menea Patrones y antipatrones de arquitectura: Singleton en Menéame

Contenidos relacionados: Google, Live Search, Tafiti, Yahoo

Lecturas recomendadas


Suscripciones

Impulsado por FeedBurner
Impulsado por Feedburner
Suscríbete a ChicoDotNet utilizando Google Suscríbete a ChicoDotNet utilizando netomat Hub Suscríbete a ChicoDotNet utilizando Plusmo Suscríbete a ChicoDotNet utilizando Newsburst Suscríbete a ChicoDotNet utilizando Attensa Suscríbete a ChicoDotNet utilizando My Yahoo Suscríbete a ChicoDotNet utilizando NewsGator Suscríbete a ChicoDotNet utilizando netvibes Suscríbete a ChicoDotNet utilizando The Free Dictionary Suscríbete a ChicoDotNet utilizando Bitty Suscríbete a ChicoDotNet utilizando Excite MIX Suscríbete a ChicoDotNet utilizando Pluck Suscríbete a ChicoDotNet utilizando Webwag Suscríbete a ChicoDotNet utilizando podnova Suscríbete a ChicoDotNet utilizando ZapTXT Suscríbete a ChicoDotNet utilizando NewsAlloy Suscríbete a ChicoDotNet utilizando flurry Suscríbete a ChicoDotNet utilizando Pageflakes Suscríbete a ChicoDotNet utilizando ODEO Suscríbete a ChicoDotNet utilizando PodcastReady Suscríbete a ChicoDotNet utilizando Bloglines Suscríbete a ChicoDotNet utilizando My AOL Suscríbete a ChicoDotNet utilizando Rojo

Portal de contenidos impulsado por Blogger | Ejemplos de código impulsados por ASP .NET 2.0 | Sindicación Atom válida | Sindicación RSS 2.0 válida | ChicoDotNet es un portal impulsado por Aynkia Desarrollo: Aplicaciones Web, Windows y Smart Client | ©© Algunos derechos reservados 2006 Aynkia Systems Consultores. El contenido de este sitio Web está regulado por una licencia Creative Commons Attribution 2.5 License

Ranking de ChicoDotNet en Blogalaxia

Obtén vistas previas utilizando Snap.com