intermediateFacade Pattern

How can a Facade class turn into a god object over time, and what's the usual way to prevent that?

A facade starts out coordinating a handful of related calls behind one clean method, which is exactly its intended job. The risk shows up as the application grows: every new client task that happens to need several subsystems gets added as one more method on the same facade class, because it's already sitting there and already has references to everything. Left unchecked, that facade ends up responsible for coordinating dozens of unrelated tasks across the entire system, becoming a single class that's hard to change safely because almost every feature touches it somehow. The usual fix is splitting one overloaded facade into several smaller, more focused facades -- one per genuine use case or per type of client -- so each one keeps a narrow, coherent responsibility instead of accumulating everything by default.

Ready to master this question?

Generate a complete walkthrough — background, the full answer in plain language, a working code example explained line by line, a real-world scenario, common mistakes, and how this same question gets asked in different ways.

Sign in to generate a response

Next Step

Continue to When is the Flyweight pattern actually worth applying, and what makes it risky to reach for by default?← Back to all Low-Level Design & Design Patterns questions