Patrón Façade

Post on 07-Jul-2015

123 views 1 download

description

Francisco Arroyo, Consultor Tecnológico de Autentia habla sobre el Patrón Façade, dentro de los workshops de Patrones de Diseño de Autentia.

Transcript of Patrón Façade

PATRÓN FAÇADE

Francisco J Arroyo Castrohttps://plus.google.com/+FranciscoArroyo@farroyocastro

AUTENTIA.COM

Madrid, 06 de Agosto de 2014

● GoF - Patrón estructural.

● Busca conseguir facilidad de uso y/o legibilidad.

● No añade funcionalidad.

● Conoce los subsistemas pero los subsistemas no lo conocen a él.

● Reducir acoplamiento

Descripción

Ejemplo - UML

http://it.wikipedia.org/wiki/File:Esempio_Pattern_Facade_01.jpg

Ejemplo - UML

http://it.wikipedia.org/wiki/File:Esempio_Pattern_Facade_02_1.jpg

class CPU { public void freeze() { ... } public void jump(long position) { ... } public void execute() { ... }} class Memory { public void load(long position, byte[] data) { ... }} class HardDrive { public byte[] read(long lba, int size) { ... }}

Ejemplo - Código - Subsistemas

class Cliente { public static void main(String[] args) { CPU processor = new CPU(); Memory ram = new Memory(); HardDrive hd = new HardDrive();

start(processor, ram, hd);}

public void start(processor, ram, hd) { processor.freeze(); ram.load(BOOT_ADDRESS

, hd.read(BOOT_SECTOR, SECTOR_SIZE));processor.jump(BOOT_ADDRESS);processor.execute()

}}

Ejemplo - Código - Cliente sin Façade

class ComputerFacade { private CPU processor; private Memory ram; private HardDrive hd; public ComputerFacade() { this.processor = new CPU(); this.ram = new Memory(); this.hd = new HardDrive(); } public void start() { processor.freeze(); ram.load(BOOT_ADDRESS, hd.read(BOOT_SECTOR, SECTOR_SIZE)); processor.jump(BOOT_ADDRESS); processor.execute(); }}

Ejemplo - Código - Cliente con Façade

class Cliente { public static void main(String[] args) { ComputerFacade computer =

new ComputerFacade(); computer.start();

}}

● Abstrae uso de los sistemas internos

● Permite limitar la exposición de los métodos de una clase

● Añade legibilidad

● Permite modificar el sistema sin modificar los clientes

Ventajas

● Podemos enmascarar antipatrón The God.

● No tiene porqué haber una única fachada

Precauciones

¿Preguntas?

Preguntas

Gracias!