Use the Façade pattern when…


A system has several identifiable subsystems and:

  • The abstractions and implementations of a subsystem are tightly coupled.
  • The system evolves and gets more complex, but early adopters might want to retain their simple views.
  • You want to provide alternative novice, intermediate, and “power user” interfaces.
  • There is a need for an entry point to each level of layered software.

But consider using instead:

  • The Abstract Factory pattern for designs where subsystems create objects on behalf of the client.

Choose the Façade you need…

  • Opaque
    • Subsystem operations can only be called through the Façade.
  • Transparent
    • Subsystem operations can be called directly as well as through the Façade.
  • Singleton
    • Only one instance of the Façade is meaningful.