В первую очередь интерфейсы, очевидно, являются инструментом проектирования, объединяющим разнородные классы с общими чертами.
Но тогда интерфейсы, подобные упомянутым, также могут очень помочь при написании модульных тестов.Такие инструменты, как easymock , отлично работают с интерфейсами.
Лично мне нравится иметь интерфейсы для сервисов, но не обязательно доменные объекты, в зависимости от того, насколько "богаты" доменные объекты.Если они, например, выполняют много функций в файловой системе или действительно тесно связаны со слоем services / dao, я, вероятно, создам там и интерфейсы - чтобы упростить юнит-тесты.