Patrón Façade

11
PATRÓN FAÇADE Francisco J Arroyo Castro https://plus.google.com/+FranciscoArroyo @farroyocastro AUTENTIA.COM Madrid, 06 de Agosto de 2014

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

Page 1: 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

Page 2: Patrón Façade

● 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

Page 3: Patrón Façade

Ejemplo - UML

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

Page 4: Patrón Façade

Ejemplo - UML

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

Page 5: Patrón Façade

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

Page 6: Patrón Façade

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

Page 7: Patrón 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();

}}

Page 8: Patrón Façade

● 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

Page 9: Patrón Façade

● Podemos enmascarar antipatrón The God.

● No tiene porqué haber una única fachada

Precauciones

Page 10: Patrón Façade

¿Preguntas?

Preguntas

Page 11: Patrón Façade

Gracias!