Skip to main content
Design Patterns 70 XP · 6 min

Facade: The Friendly Face of the System

Provide a simplified interface to a complex subsystem — hide the chaos behind a single clean entry point without removing the complexity for those who need it.

Showing
Ad (728×90)

Why this matters

Video processing requires: encode the video, normalize audio, extract metadata, generate a thumbnail, upload to CDN, notify analytics. Any controller that needs to do this must know about five different subsystems. When the CDN provider changes, every controller breaks. Facade collects the orchestration in one place. Controllers become ignorant of the details, and the subsystem is still fully accessible for advanced use cases that need finer control.

The problem

Bad

The solution

Good

Facade vs. hiding complexity

Facade does not delete the subsystem. Advanced callers can still reach VideoEncoder or CDNUploader directly when they need to. The facade is an optional shortcut for the common case, not a wall that prevents deeper access. This is what separates a good facade from a god object — the facade delegates; it does not own all logic itself.

Key takeaway

Facade gives casual callers a simple path through a complex subsystem while leaving the full subsystem available for those who need it — centralize orchestration, not ownership.

Done with this lesson?

Mark it complete to earn XP and track your progress.