Interface Segregation Principle: code should not be forced to depend on methods it does not use.

Example Violation: lets say we have an Operations (foo(), bar(), xyz()) class that Client relies on but only uses foo() from. This may require us to create dummy implementations. It reduces cohesion. May introduce unnecessary complexity and large class files. If different clients have different requirements, changes to the requirements of one client may negatively affect the other clients. Instead each client class should interact with interfaces which only include the operations that that class itself needs.