Interface Segregation Principle

States that interfaces should remain small and focused. Interface implementations are then lightweight, and easy to create and maintain. Code that depends on interfaces that are small and focused in turn keep a smaller scope of responsibility.