My coworker and I are arguing very hard about this topic. He's thinking that every single class should have an Interface that the class implements (also Single-Implementations). He uses this design for documentation principles. In my mind that is obsolete because in Java you can comment on implementations, too.
I think that Interfaces are only needed there, where you have to publish some kind of open API, for yourself as the programmer, or for other people who later will connect their projects at this docking point.
Also I am in knowledge about Mocking Objects, whose library (e.g. EasyMock) also requires some Interface to create a Mock.
In my view, interfaces for every class are not necessary for every single class in JAVA. In other languages including some Frameworks it might be helpful.
Maybe you could show me some aspects that I don't see where Interfaces for every class might be helpful, or am I on the right way to deny this design principle?