Ir al contenido principal

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++.

A muchos les habra pasado este error cuando intentaron generar un informe creado en crystal reports cuando se publica la aplicación. La solucion es sencilla, lo que pasa es que cuando se publica la aplicacion los archivos  *.rpt no quedan copiados en el path con la solucion, asi que en el path (en el servidor)  se deben copiar y pegar los archivos *.rpt. La ruta es la misma de la solución de visual studio. Y solucionado.

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

Realizando la configuración de un servidor Apache en un Oracle Linux 7  me ocurrió el siguiente problema:  (13)Permission denied: AH00957: HTTP: attempt to connect to IP (* . * . * . * ) failed AH00959: ap_proxy_connect_backend disabling worker for ( * . * . * . * ) for 60s A pesar que el proxy reverso devolvía la información para otros servicios, el que me encontraba configurando generaba el error "503 service unavailable" y los otros servicios por proxy reverso funcionaban perfectamente.  Para solucionar esto se debe ejecutar el comando, en terminal:  /usr/sbin/setsebool -P httpd_can_network_connect 1 Con esto ya funcionara normal la conexión al servicio por proxy reverso. 

¡Cuidado! - Correo falso de bancolombia

Abro mi correo y me encuentro con el siguiente mensaje.  Es una copia exacta de un correo real de Bancolombia y quizás a primera vista no es muy obvio que se trata de un correo falso, con el objetivo de robar información o instalar un virus en el computador.  He resaltado en la imagen el dominio de donde se  envió el correo, que es el principal indicio, que es un correo falso, dice co.bancofalabella lo cual indica que el correo fue enviado de un dominio falso, no se dejen engañar tampoco es de bancofalabella.  El correo tiene un vinculo supuestamente a https://www.grupobancolombia.com/ no se atrevan a tocar ese vinculo, los llevará a otra dirección. Muy probablemente con un virus o una pagina falsa para robar sus datos o acceso bancario.  Simplemente cuando vean un correo que parezca original, en primer lugar verifiquen el dominio de la empresa que envió el correo, aun así no se confíen si ven algo extraño, lo mejor es comunicarse directamente con la entidad p