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

Upload: autentia

Post on 07-Jul-2015

120 views

Category:

Technology


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

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!