Facade is strongest when a subsystem already has real internal complexity and callers mostly want one or two task-oriented entry points.
Strong Java Use Cases
- checkout, onboarding, billing, or provisioning workflows
- document export pipelines
- media transcoding or processing toolchains
- legacy subsystem wrapping during modernization
- application services that coordinate multiple internal components
Weak Use Cases
Facade is weak when:
- the subsystem is already tiny
- the facade only forwards one call with no simplification value
- the boundary becomes a giant miscellaneous service
Review Questions
- What repeated coordination are callers being spared?
- Is the facade reducing cognitive load or only moving method names?
- Does the subsystem still retain a coherent internal API behind the facade?
Facade earns its place when it removes coordination burden from most callers.