Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Facade Proposal #1

Open
WolfZardST opened this issue Dec 17, 2021 · 0 comments
Open

Facade Proposal #1

WolfZardST opened this issue Dec 17, 2021 · 0 comments

Comments

@WolfZardST
Copy link

NOTE: This is for a Design Patterns Homework, feel free to ignore it. Thank you ^^

Facade:

Se observa un uso repetido de las clases BufferedReader, FileReader, BufferedWriter, FileWriter y File en varias partes de la aplicación para el manejo de archivos. Si se contempla al conjunto de dichas clases como un subsistema, es altamente recomendable aplicar el patrón estructural Facade.

Justificaciones/Motivaciones:

Las únicas finalidades que se encuentran al uso de estas clases son dos:

  • Obtener un String que ha sido escrito en un archivo.
  • Escribir un String en un archivo.

Siendo que el interés principal es realizar estas dos acciones, sería ideal contar con una clase que las simplificara en dos métodos, uno para escribir y otro para leer. Luego, cuando se necesite manejar archivos, bastaría con instanciar esta clase y acceder al método correspondiente.

Diagrama del Problema:

FacadeProblem

Diagrama de la Solución Propuesta:

FacadeSolution

Implicaciones/Mejorías:

Se aisla el manejo de archivos del resto del sistema.

Se intercambia el acoplamiento a las distintas clases por una sola: FileHandler. Esto permite cambiar la forma de manejar archivos de forma sencilla, permitiendo al sistema evolucionar con el paso del tiempo.

Varias clases del modelo están acopladas a la clase FileHandler.

FacadeCode.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant