style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Anuncio:Se busca patrones de diseño !!!!

Buenas a todos

La verdad es que cuando empece a programar(no hace mucho) por decirlo de alguna manera despilfarraba mi código sin preocuparme mucho hasta que un profesor(increíblemente bueno por cierto) nos enseño los famosos patrones de diseño,los cuales no importa el lenguaje que estés usando JAVA,C#,PHP etc sirven para la utilización el código o si se gusta ver de otra forma :

"son soluciones ya hechas para aplicar en diversas situaciones"

ahora bien la razón de este tema es para que me recomienden el uso de algún patrón de diseño en particular y cuando lo usan,cual es la ventaja etc para que asi los menos experimentados nos podamos enriquecer con la experiencia de los mas experimentados por lo menos en lo que a patrones de diseño se refiere

Por ejemplo:Singleton(si muy mencionado en estos foros !!!!)

public class Singleton {
    private static Singleton INSTANCE = null;
 
    // Private constructor suppresses
    private Singleton() {}
 
    // creador sincronizado para protegerse de posibles problemas  multi-hilo
    // otra prueba para evitar instanciación múltiple
    private synchronized static void createInstance() {
        if (INSTANCE == null) {
            INSTANCE = new Singleton();
        }
    }
 
    public static Singleton getInstance() {
        if (INSTANCE == null) createInstance();
        return INSTANCE;
    }
}

Sirve para:Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.

Yo lo uso:yo lo uso para hacer un metodo de conexion a base de datos,habiendo establecido un metodo conectar() en singleton tengo acceso al mismo de manera global dentro de la aplicación lo cual me garantiza que voy a trabajar con una única conexión, obviamente si hago uso del metodo anteriormente citado,

OJO escoji uno de los patrones mas utilizados

Asi que cualquier comentario es bien recibido siempre y cuando tenga que ver con patrones y los mimos sean "practicas sanas" y nos ahorren trabajo

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Una forma de inicializar el

Una forma de inicializar el singleton es utilizando una clase anidada. El efecto es que se evita lllamar al metodo sincronizado para obtener la instancia al mismo tiempo que se logra que se genere la instancia en el momento adecuado:

public class Elvis {
     private static class CreateElvis {
              private static final Elvis instance = new Elvis();
     }
     private Elvis(){}
     public Elvis getInstance() {
          return CreateElvis.instance;
     }
}

Puntos extra al que explique ( con más detalle que yo ) las ventajas de esta forma.

En recientes fechas ( 3 - 4 años para acá ) se ha visto este partrón como un anti-patron, al grado que hay una biblioteca que ayuda a detectar singletons en el código y eliminarlos. :)

http://code.google.com/p/google-singleton-detector/

Antes de decidir si es bueno o malo, lo mejor será conocerlo a fondo.

Imagen de ezamudio

eager

se inicializa el objeto en cuanto se carga la clase. Habrá quien quiera un lazy singleton por si no se usa, no se instancia nunca.

El singleton es un anti patrón de diseño en java

Muchas veces no nos detenemos a pensar qué es todo lo que hay detrás de un lenguaje de programación, se vuelve en nuestra herramienta de todos los días e ignoramos todo lo que existe detrás.
Pues bien, detrás de un lenguaje tenemos un compilador y en Java tenemos también bytecode y una máquina virtual.
El singleton se convirtió en un anti patrón de diseño en Java debido a que las instrucciones resultantes de ese código en bytecode no garantizan que pueda obtenerse un objeto cuando se invoca.
Voy a escribir un post al respecto para explicarlo con mas detalle.

No es un antipatrón o al

No es un antipatrón o al menos no en todos los casos.

Es especialmente malo para hacer pruebas unitarias y programación distribuida, por que no se pueden hacer objetos mock de singletons y por que es mucho más difícil tener una sola instancia para todos los nodos en una ejecución distribuida.

Otro (d)efecto es el tener un estado global.

Sin embargo el singleton tiene su utilidad para un objeto que efectivamente es único en toda la aplicación. Como todas las herramientas se puede abusar de él. Lo importante es saber cuando sí y cuando no usarlo.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">