This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
wiki:pdd_6 [2024/09/02 00:14] – created admin | wiki:pdd_6 [2024/09/08 22:29] (current) – admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Facade ====== | ====== Facade ====== | ||
+ | **Contexto: | ||
+ | |||
+ | <code java> | ||
+ | Scanner s = new Scanner(" | ||
+ | Parser p = new Parser(s); | ||
+ | AST ast = p.parse(); | ||
+ | CodeGenerator code = new CodeGenerator(ast); | ||
+ | code.eval(); | ||
+ | </ | ||
+ | |||
+ | **Problema: | ||
+ | |||
+ | **Solución: | ||
+ | |||
+ | En nuestro problema, la Fachada podría ser: | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | class InterpretadorX { | ||
+ | |||
+ | private String arq; | ||
+ | |||
+ | InterpretadorX(arq) { | ||
+ | this.arq = arq; | ||
+ | } | ||
+ | |||
+ | void eval() { | ||
+ | Scanner s = new Scanner(arq); | ||
+ | Parser p = new Parser(s); | ||
+ | AST ast = p.parse(); | ||
+ | CodeGenerator code = new CodeGenerator(ast); | ||
+ | code.eval(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | De esta manera, los desarrolladores que necesitan ejecutar programas en X desde Java podrán hacerlo mediante una única línea de código: | ||
+ | |||
+ | <code java> | ||
+ | new InterpretadorX(" | ||
+ | </ | ||
+ | |||
+ | Antes de implementar la Fachada, los clientes necesitaban crear tres objetos de tipos internos del intérprete y llamar a dos métodos. Ahora, basta con crear un solo objeto y llamar a `eval`. |