Interface Segregation Principle¶
Clients should not be forced to depend on methods they do not use, because wide interfaces create artificial coupling to unrelated changes.
Tension Addressed¶
Flexibility vs. Simplicity
Recognizable As¶
Role interfaces instead of header interfaces; multiple small interfaces per class rather than one large one; clients depending only on the methods they call
Canonical Sources¶
Martin, "The Interface Segregation Principle" (1996); Martin, "Agile Software Development" (2002)
Transfers To¶
API Design (granular endpoints), Microservices (service interfaces), Testing (narrow test doubles)
Fat interfaces force implementers to provide stubs for unused methods and force clients to recompile when unrelated methods change. The principle guides discovering natural role boundaries in a system.
Related Concepts¶
- Coupling - Software Architecture