Il mio collega e io stiamo discutendo molto su questo argomento. Sta pensando che ogni singola classe dovrebbe avere un'interfaccia implementata dalla classe (anche le singole implementazioni). Usa questo disegno per i principi della documentazione. Nella mia mente è obsoleto perché in Java puoi anche commentare le implementazioni.
Penso che le interfacce siano necessarie solo lì, dove devi pubblicare qualche tipo di API aperta, per te come programmatore o per altre persone che in seguito collegheranno i loro progetti a questo punto di ancoraggio.
Inoltre sono a conoscenza di Mocking Objects, la cui libreria (ad es. EasyMock) richiede anche qualche interfaccia per creare un Mock.
Dal mio punto di vista, le interfacce per ogni classe non sono necessarie per ogni singola classe in JAVA. In altre lingue, inclusi alcuni Framework, potrebbe essere utile.
Forse potresti mostrarmi alcuni aspetti che non vedo dove possano essere utili le interfacce per ogni classe, o sono sulla strada giusta per negare questo principio di progettazione?