FYI we tend to always create an abstract parent class when we expect the user to have to implement an interface of ours.
That's absolutely not true. Do you want me to list interfaces where we don't provide an abstract base class. If anything this is a more recent approach.
That ensures that - in certain conditions - it gets easier for us to add new methods to the SPI without breaking backwards compatibility.
I am aware of the intention behind it. It can help in some cases, but as you say yourself not in all. Either way, I'd rather look at the interface itself again and start improving there instead of "putting lipstick on a pig".
|