Просто хотел добавить пример, когда вам может понадобиться использовать оба. В настоящее время я пишу обработчик файла, связанный с моделью базы данных в ERP-решении общего назначения.
- У меня есть несколько абстрактных классов, которые обрабатывают стандартную версию crud, а также некоторые специальные функции, такие как преобразование и потоковая передача для различных категорий файлов.
- Интерфейс доступа к файлу определяет общий набор методов, которые необходимы для получения, хранения и удаления файла.
Таким образом, я получаю несколько шаблонов для разных файлов и общий набор методов интерфейса с четким различием. Интерфейс дает правильную аналогию с методами доступа, а не с базовым абстрактным классом.
В дальнейшем, когда я буду создавать адаптеры для различных служб хранения файлов, эта реализация позволит использовать интерфейс в других местах в совершенно разных контекстах.