Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. The pattern has structural purpose and applies to objects.
- you want to provide a simple interface to a complex subsystem
- there are many dependencies between clients and the implementation classes of an abstraction
- you want to layer your subsystems, use a facade to define an entry point to each subsystem level