Here are some benefits of the Facade pattern:
- Simplified interface to a complex body of code: A solid Facade class will conceal complexity from a client while providing a simplified interface to interact with an intricate system.
- Easy refactoring: It's easier to refactor code that's isolated behind a Facade because the system's interface remains consistent to the client while its components are being modified behind the scenes.
The following are some drawbacks to watch out for:
- It makes it easier to hide the mess: Using the Facade pattern to hide messy code behind a clean front-facing interface will defeat the pattern's core benefits in the long run, but this pattern does offer a way to mask some code smells until you have time to refactor them. However, expecting to have enough time later to fix stuff is a trap in itself because we rarely have enough time to refactor things correctly.
- Too many facades: Globally accessible...