El patron Singleton.


El patrón Singleton:

Se asegura que una clase tenga una unica instancia, y provee un punto de acceso global a esta.

El singleton basico :


class Singleton

    {

 

        private static Singleton uniqueInstance;

 

        private Singleton() { }

 

        public static Singleton getInstance()

        {

            if (uniqueInstance == null)

            {

                uniqueInstance = new Singleton();

 

            }

 

            return uniqueInstance;

        }

 

 

    }



En el siguiente ejemplo veremos como se puede utilizar el singleton para tener un solo buscador a la base de datos para evitar el desperdicio de una memoria. Como veremos la utilización es un caso real puede diferir del caso ideal.

 
 
using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

namespace PlataformaIndicadores

{

 

    /// <summary>

    /// Clase Ejemplo de singleton

    /// </summary>

    public class BuscadorBD

    {

/// Este Objeto proviene el EDM Entity data model creado en visual studio. el cual contiene la base de datos de la aplicacion.
        static PlataformaIndicadoresBDContainer1 BDPlataforma = null;

 
/// Importante no olvidar el private a la unica instancia o no tendria sentido el singleton
        private static BuscadorBD singletonBuscador =null;

 

 
/// Importante no olvidar el private en el constructor.
        private BuscadorBD(){

           

        }

        /// <summary>

        /// Singleton del buscador. Podemos pasar informacion si la necesitamos. ( esta es una  de las formas).

        /// </summary>

        /// <param name="plataforma"></param>

        /// <returns></returns>

        public static BuscadorBD getInstance(PlataformaIndicadoresBDContainer1 plataforma){

            BDPlataforma = plataforma;

 
   /// Revisa si la instancia esta creada, si no la crea.
            if(singletonBuscador==null){

               singletonBuscador= new BuscadorBD();

            }

/// Devuelve el objeto con su unica instancia.
            return singletonBuscador;

        }

}
 
 

Espero que les haya ayudado en la utilizacion de este patron que aun siendo de los mas sencillos puede cambiar ya en un caso aplicado.
 

Comentarios

Entradas populares de este blog

Operación no admitida. Un documento procesado por el motor JRC no se puede abrir en la pila C++.

Error: 503 service unavailable + (13)Permission denied: AH00957: HTTP: attempt to connect to (* . * . * . * ) failed

Cómo instalar IIS en Windows Server (experiencia real, paso a paso)