The Facade Pattern provides a simplified interface to a library, a framework, or any other complex set of classes for a client to make use of it.
![[Screenshot 2023-09-06 at 3.26.23 PM.png]]
* The facade provides convenient access to a particular part of the subsystem's functionality.
* Sometimes the facade can grow too big and become a God object. Therefore, an additional facade can be incorporated to avoid polluting a single facade with unrelated features.
* The idea of a facade is providing a simple interface to the client, and if the code becomes too dependent on this class, that might make it another complex structure and no longer a "simple" object.
* Subsystem classes are't aware of the facade's existence, they operate within the system and work with each other directly.
* The client uses the facade instead of calling the subsystem objects directly.
* The pattern improves the readability and usability of a software library by hiding the interactions of its components.
* Facades can be used to define entry points to each level of a subsystem, thus decoupling multiple subsystems and forcing them to communicate only through facades.