Provide a simplified interface to a complex subsystem. You want a clean API for a complex set of classes. You want to decouple clients from
Facade
Overview
Provide a simplified interface to a complex subsystem.
When to use
- You want a clean API for a complex set of classes.
- You want to decouple clients from subsystem details.
Java example
TypeScript example
Pros and cons
Pros:
- Simplifies client usage.
- Reduces coupling.
Cons:
- Can become a god object.
- May hide important capabilities.
Common pitfalls
- Putting business logic into the facade.
- Growing the facade instead of creating focused APIs.