Una de patrones de creación(Parte II )

Después de una pequeña introducción a los patrones Parte I , vamos a hacer un resumen de los patrones de creación más utilizados.
Estos patrones están orientados a facilitar los procesos de creación de objetos en el sistema, consiguiendo simplificar la creación de objetos complejos, permitiendo la instanciación sin identificar la clase específica en el código y centralizando el proceso de construcción.

Hay bastantes mas patrones que podría ser incluidos en esta lista, pero los mas relevantes en mi opinión son:

  • Abstract Factory ( Fábrica abstracta)
  • Builder(Constructor)
  • Singleton(Único)

AbstractFactory
Proporciona una clase encargada de la generación de familias de objetos sin tener que especificar su clase concreta. Deberemos usar este patrón cuando:

  • La aplicación cliente debe ser independiente del proceso de creación.
  • La aplicación debe poder funcionar con una o mas familias de objetos( con una implementación diferente)
  • Deseamos revelar solo los contratos y no las implementaciones.
  • Necesitamos interfaces genericas adaptadas a productos abstractos.

Wikipedia Diagrama de classes del patron AbstractFactory

Una fábrica abstracta ayuda a incrementar la flexibilidad tanto en tiempo de ejecución como en tiempo de ejecución.

Builder
Simplifica la creación de objetos complejos definiendo una clase cuyo propósito sea construir instancias de otra clase. Debemos usar este patrón cuando:

  • Para crea objetos con una estructura interna compleja y con atributos dependientes entre si.
  • Utiliza objetos del sistema conflictivos, como pueden ser recursos JNDI.
  • Pueden necesitar de un sistema de cache centralizado.

Singleton
Permite tener una única instancia de una clase, a la que puedan tener acceso todas las clases del sistema.
A pesar de su simplicidad, es uno de los patrones mas utilizados. Una correcta implementación (sacada de la wikipedia) del patron Singleton podría ser:

public class Singleton{
private static Singleton INSTANCE = null;
// Private constructor suppresses
private Singleton() {}
private synchronized static void createInstance() {
if (INSTANCE == null) {
INSTANCE = new Singleton();
}
}
public static Singleton getInstance() {
if (INSTANCE == null) createInstance();
return INSTANCE;
}
}

Comentarios

  1. Muy interesante. Aquí dejo un enlace a una página con una breve explicación y con ejemplos de código en Java a patrones de creación, estructurales y
    de comportamiento.

    http://www.info-ab.uclm.es/asignaturas/42579/cap4/Creacion.htm

    Como recomendaciones bibliográficas el original de los GOF:
    Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley)

    Y desde aquí se puede descargar en formato PDF de forma gratuita el «EJB Design Patterns»:
    http://www.theserverside.com/tt/books/wiley/EJBDesignPatterns/index.tss

    Un saludo.

  2. Mi intención es solo una pequeña introducción para que todos en la empresa sepamos de que estamos hablando, el tema de patrones me queda aún mucho que aprender… gracias por los enlaces, les echare un vistazo.

  3. Pingback: Xnoccio - » Una de patrones (Parte I)

Comments are closed.