Understanding Interface Segregation Principle
A client should never be forced to implement an interface that it doesn't use
A client should never be forced to implement an interface that it doesn't use
Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification.
High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions.
Objects of a superclass should be replaceable with objects of its subclasses without affecting the correctness of the program.