Professional Documents
Culture Documents
de Dominio se subdivida en varios subsistemas tales como: Ventas, Envos, etc. El subsistema de Ventas puede hacer uso de los servicios proporcionados por el subsistema de Envos. Un buen diseo definira una interfaz de servicio nica que disminuya el acoplamiento y facilite la realizacin de cambios en la implementacin de las clases que proporcionan dicho servicio.
Ventas Envios
0..*
FormaEnvio
0..*
0..*
1...
0...
Destino
0..*
0...
MedioTransporte
EmpresaTransporte 1 1 1
Localidad
0... 0...
PuntoDistribucion
Provincia
Pais
Participantes 1. Fachada [FachadaEnvio]: Conoce las clases del subsistema a las que le pide colaboracin, en alguna peticin. Se ocupa de delegar las solicitudes de los clientes en los objetos apropiados. 2. Clases del Subsistema: implementan la funcionalidad del subsistema y realizan las tareas solicitadas por la fachada.
Procedimiento: 1. Definir los servicios que sern brindados por la Fachada. 2. Crear una clase de fabricacin pura de acceso pblico que proporcione a los clientes los servicios definidos (FachadaEnvio). 3. Implementar los mtodos que realizan la peticin a las clases del subsistema. 4. Establecer las relaciones requeridas con los objetos propios del subsistema. Funcionamiento
: GestorRegistrarPedido
: FachadaEnvio
: FormaEnvio
: Destino
: Localidad
mostrarDestinos( )
getNombre( )
getNombre( )
mostrarFormasEnvio( )
getNombre( )
(*) Las entidades marcadas con verdes representan a mltiples instancias de dicha entidad.
Implementacin A continuacin veremos una forma simplificada de implementar el patrn Fachada para el ejemplo planteado. crear clase pblica FachadaEnvio { ... crear mtodo pblico existeDestino(String nombreDestino) {
//iterar sobre la mltiple instancia Destino hasta encontrar el destino deseado
Ventajas Disminuye el acoplamiento entre un subsistema y sus clientes. Ocultar a los clientes los componentes de un subsistema.