Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/05/2008, 07:49
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Patrón Facade en Arquitectura en capas

Buen, ayer de noche tarde estaba escribiendo una explicación ideal para un libro, pero perdí conexión con forosdelweb.com y perdí todo... así que ahora va la versión más resumida y hecha directamente desde Gmail (por las dudas)

Una fachada es eso, una fachada, un "representante" para acceder al paquete / capa.

Aclaración: una capa se representa como un paquete, pero un paquete no necesariamente es una capa (un paquete puede estar compuesto por muchos paquetes).

Para desacoplar y simplificar el acceso al paquete que ofrece servicios se puede aplicar el patrón Facade.

Escenario 1:
de la capa Presentación se accede directamente a todas las clases que se requieran, una por una, por consiguiente si lo representamos con UML se vería internamente como muchas flechas del exterior que apuntan a muchas clases del paquete Negocio.

Código PHP:
// Desde el paquete Presentación

Usuarios::getAll();
Facturas::getFromId);
Proveedores::getFromIdFactura); 
etc.

Escenario 2: para simplificar la operativa, se crea una fachada / representante que recibe todas las peticiones del exterior, "no deja entrar a nadie", y les devuelve todos los datos que requieran, cambiando el diseño como muchas flechas del exterior que apuntan a una sola clase fachada del paquete / capa Negocio.

Código PHP:
// Desde el paquete Presentación

NegocioFachada::getUsuarios();
NegocioFachada::getFacturaFormId);
NegocioFachada::getProveedorFromFactura); 
De esta forma, cada capa se comunica con la otra siempre a través de su fachada, y solo internamente la fachada interactúa con las clases concretas (es más, dentro de la fachada tendrás el mismo código que en el Escenario 1).

Nota: se pueden hacer variaciones, como por ejemplo, en vez de una Fachada hacer una Fábrica (o Fachada Fábrica) donde en algunos casos retorna la instancia de la clase que necesita, sin llegar a tener una dependencia directa contra la clase, solo contra la Fábrica.

Te recomiendo leer sobre "bajo acoplamiento, alta cohesión".
__________________
Blog phpsenior.com Cursos a Distancia surforce.com