I am prolific consumer of open source Java software, and I frequently find classes that implement an interface having the suffix Impl. This shouldn’t annoy me, but it does. Why? Putting aside the horrible abbreviation “Impl”, the class is named so that it leaves no room for other implementations. This in turn implies that there is an interface which will only ever have a single implementation and therefore should not be an interface at all.