Patrones de Diseño y JavaScript: Façade

Dentro de los patrones de diseño estructurales, el patrón Façade es quizás el más sencillo. El objetivo de dicho pattern es simplificar las relaciones que existen entre los objetos, reduciendo el número de actores en las mismas mediante el uso de una “fachada” que expone la lógica a compartir.

La idea madre de este pattern es de  suma importancia en cuanto a nivel arquitectura de un desarrollo: Es beneficioso mantener los objetos y sus relaciones en el nivel más simple posible, ya que esto facilita el trabajo sobre los mismos (modificaciones y extensiones) así como también la comprensión tanto a nivel operación como proyecto.

Este pattern es de uso común en la mayoría de los servicios que se encuentran en la web (Facebook, Twitter), donde el API provista representa la cara visible (y por lo general accesible) de la lógica subyacente.

Un caso particular podría ser el de muchos objetos que consumen distintos servicios de entidades, los cuales se presentan en varios “canales” (en las gráficas son los objetos Permission, Data y CustomActions).
Como se puede observar, el diagrama de relaciones es bastante confuso:

Façade: Falta de implementacion

Y es en estos casos es donde brilla el pattern Façade, donde una feliz implementación reduce drásticamente el acoplamiento existente entre los consumidores y los distintos servicios accedidos.

A nivel implementación no hay demasiada ciencia, solo es cuestión de replicar en la Façade los métodos deseados:

/**
 * Engloba los servicios de entidad
 */
var EntityServicesFacade = {
	/**
	 * Carga los datos de la entidad
	 * y ejecuta de manera asincronica el hadnler
	 *
	 * @param {String} entity
	 * @param {Function} handler
	 */
	load: function(entity, handler) {
		Permission.load(entity, handler);
	},
	/**
	 * Verifica si el usuario actual puede editar
	 * registros de la entidad
	 *
	 * @param {String} entity
	 * @return {Boolean}
	 */
	canEdit: function(entity) {
		return Permission.canEdit(entity);
	}
	//... demas métodos
};

Leer más:

  • [Libro] Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four)
  • Facade pattern (Wikipedia)


2 views shared on this article. Join in...

  1. PHP>ALL dice:

    algunas cosas no entiendo, por ej facade no es para simplificar una interfaz nomas?

    por ahi decis q reduce el acoplamiento entre los consumidores, pero ningun consumidor depende de otro consumidor

    a que te referias?

  2. La fachada puede involucrar una o más fuentes distintas, pero sí, abstracción mediante, es ni más ni menos que una interfaz a la cual acceden uno o más consumidores.

    A lo segundo, ahí hice una aclaración al respecto

    Gracias por apuntarla.

Deja un comentario

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

Comment

You may use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>