Skip to content

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.