Twitter Flickr Pinterest LinkedIn YouTube Google Maps E-mail RSS
formats

Explicación del Patrón Singleton en POO

Singleton, aunque suene a marca de tenis, corresponde realmente a un patrón de diseño de clases en el paradigma de la programación orientada a objetos.

Este patrón o metodología de funcionamiento se da a la hora de diseñar las clases, y nos permite que exista solo una única instancia(objeto) de una clase.

Aunque singleton en inglés se traduzca como semifallo. El significado más parecido es single: único o sencillo, haciendo alusión a el acceso a una única instancia.

Pero me pregunto ¿ para qué queremos realizar esto, que finalidad tiene ?

La respuesta es sencilla: garantizar que siempre accedemos al mismo objeto o instancia.

¿ Que ventajas me aporta ?

Acceder de manera universal y constante durante el transcurso del programa al los métodos y el estado del objeto(instancia).

Y como se supone que lo puedo usar:

Cuando necesite que una parte de la aplicación que realmente son un conjunto de objetos en memoria o disco, accedan de manera única a dicho objeto. Es decir, centralizamos el objeto para el resto del programa (desde cualquier parte).

Ejemplo: Acceso a un objeto de seguridad que almacene datos confidenciales. O un log, o unos parámetros de la aplicación globales.

 ¿ Como lo represento ?

Como clase

Ejemplo de uso real:

Public Class Singleton
 
    Private Sub New()
    End Sub
 
   ‘ IMPORTANTISMO: Variable privada de acceso interno a la instancia singleton
   Private Shared _instancia As Singleton
 
    Public Shared ReadOnly Property Instancia() As Singleton
        ‘ Importante el uso del if es vital dentro de la clase para comprobar si no existe la instancia, puesto que de existir no crea el objeto, es ahí donde radica la esencia del patrón.
Get
            If _instancia Is Nothing Then
                _instancia = New Singleton
            End If
 
            Return _instancia
        End Get
    End Property
 
End Class

 

Un ejemplo sencillo de un contador de visitas, accesible desde cualquier parte del programa mediante la llamada al metódo IncrementarContador

public sealed class Singleton
{
  // Almacenamos las visitas del sitio en una variable 
   private int contador = 0;
   private static volatile Singleton instance = null;
 
   private Singleton() {}
 
   public static int IncrementarContador()
   {
 
           if (instance == null)
              instance = new Singleton();
 
     return instance.contador++;
   }
}

Si uso desde el exterior por el programa: Singleton.IncrementarContador ();
Este método es de tipo set, pero la funcionalidad de la clase podría verse afectada por mas propiedades, y métodos.

En este sencillo ejemplo no se contempla la exclusión. Es decir, que dos objetos accedan al mismo dato. Para ello existen variantes de este patrón.

Resumiendo:

Utilizaremos singleton en aquellas aplicaciones 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Home Ingeniería del Software Explicación del Patrón Singleton en POO
© www.palentino.es, desde el 2012 - Un Blog para compartir conocimientos ...

Uso de cookies en mi sitio palentino.es

Este sitio web utiliza cookies para que tengamos la mejor experiencia de usuario. Si continúas navegando estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de la política de cookies

ACEPTAR
Aviso de cookies