1. PATRÓN FAÇADE
AUTENTIA.COM
Francisco J Arroyo Castro
https://plus.google.com/+FranciscoArroyo
@farroyocastro
Madrid, 06 de Agosto de 2014
2. Descripción
● 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
5. Ejemplo - Código - Subsistemas
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) { ... }
}
6. Ejemplo - Código - Cliente sin 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()
}
}
7. Ejemplo - Código - Cliente con 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();
}
}
class Cliente {
public static void main(String[] args)
{
ComputerFacade computer =
new ComputerFacade();
computer.start();
}
}
8. Ventajas
● 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
9. Precauciones
● Podemos enmascarar antipatrón The God.
● No tiene porqué haber una única fachada