I'm doing some API design work at present, involving the specification of a number of interfaces as abstractions that will later be implemented by various concrete classes.
As it happens, I am using Java, but I think the question is relevant to any language that supports a similar interface concept.
I've noticed that there is often an option between:
- Making a large interface with a full range of methods
- Making multiple interfaces each containing a subset of the full range of methods (a single concrete class would probably have to implement several or all of these interfaces)
What are the pros / cons of each approach?