A SOLID design principle that states: Clients should not be forced to depend on methods that they do not uses. Ensures that we build classes whose interfaces can be broken up into groups of methods, where each group serves a different set of clients.
Examples