One definition of the Interface Segregation Principle (ISP) is that clients should not be forced to depend on methods that they do not use. The idea is to provide the smallest number of methods in a class. This leads to focused definitions, often separating a design into multiple classes to isolate the impact of any changes.
This principle seems to have the most dramatic impact on a design because it decomposes the model into a number of classes, each with a focused interface. The other four principles seem to follow from this beginning by providing improvements after the initial decomposition.
The type hints embedded in the class definition shown earlier suggest there are at least three different interfaces ...