PATRÓN FAÇADE 
AUTENTIA.COM 
Francisco J Arroyo Castro 
https://plus.google.com/+FranciscoArroyo 
@farroyocastro 
Madrid, 06 de Agosto de 2014
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
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
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) { ... } 
}
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() 
} 
}
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(); 
} 
}
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
Precauciones 
● Podemos enmascarar antipatrón The God. 
● No tiene porqué haber una única fachada
¿Preguntas? 
Preguntas
Gracias!

Patrón Façade

  • 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
  • 3.
    Ejemplo - UML http://it.wikipedia.org/wiki/File:Esempio_Pattern_Facade_01.jpg
  • 4.
    Ejemplo - UML http://it.wikipedia.org/wiki/File:Esempio_Pattern_Facade_02_1.jpg
  • 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 ● Abstraeuso 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 ● Podemosenmascarar antipatrón The God. ● No tiene porqué haber una única fachada
  • 10.
  • 11.