Skip to main content

Sign in to CleanKata

Track your progress, earn XP, and unlock every lesson.

By signing in you agree to our Terms of Use and Privacy Policy.

Design Patterns70 XP6 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.

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.

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.

🔧 Some exercises may still have errors. If something seems wrong, use the Feedback button (bottom-right of the page) to report it — it helps us fix it fast.

Hint: Facade is not about hiding complexity forever — it's about giving casual users a simple path while advanced users can still go deeper.

✗ Your version