Я намерен следовать чистой архитектуре. В этой архитектуре различные области программного обеспечения представлены концентрическими кругами. Зависимости исходного кода могут указывать только внутрь.

Внутренние уровни получают доступ к внешним слоям посредством абстракции (интерфейса или абстрактного класса).
Моя программа:
Код: Выделить всё
+ domain
- entity
* Student.java
* Course.java
- repository
* Repository (interface)
* StudentRepository (interface)
* CourseRepository (interface)
+ use case
- StudentUseCase.java
- CourseUseCase.java
+ infra
- data
* ConnectionFactory.java
* DAO (interface)
* StudentDAO.java (interface extends DAO)
* CourseDAO.java (interface extends DAO)
* StudentDAOImpl.java
* CourseDAOImpl.java
* StudentRepositoryImpl.java
* CourseRepositoryImpl.java
Код: Выделить всё
public interface Repository {
void save(T type);
void update(T type);
void delete(T type);
Optional findById(int id);
List findAll();
}
public interface StudentRepository extends Repository {
Optional findByEmail(String email);
}
public interface CourseRepository extends Repository {
Optional findByName(String name);
}
А вот мои DAO
Код: Выделить всё
public interface DAO {
int save(T type);
void update(T type);
void delete(T type);
Optional findById(int id);
List findAll();
}
public interface StudentDAO extends DAO{
Optional findByEmail(String email);
}
public interface CourseDAO extends DAO{
Optional findByName(String name);
}
Мои сомнения:
Во-первых, эта структура посещает Чистая архитектура? Если нет, может ли кто-нибудь дать мне совет?
Может ли моя программа иметь репозиторий и DAO одновременно?
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/791 ... repository