Flutter Clean Architecture
19 Apr 2022 | Flutter ArchitectureClean Architecture
Robert C. Martin (Uncle Bob) 아저씨의 클린코드를 보면 Dependency 가 밖에서 안으로 들어가는 것을 볼 수 있다. 그리고 제일 안쪽에는 Entities가 존재한다. 하지만 Entity 를 얻기 위해서는 Repository(Gateway) 를 사용해서 DB 에 접근해야 하는데 이러면 Dependency 규칙이 어긋난다. 이를 방지하기 위해 Interface 를 제공해줌으로써 Dependency Inversion 을 시킨다.
아래 그림을 보면 Control Flow 와 반대로 Dependency Inversion 된 것을 확인할 수 있다.
Data Layer
- Domain 레이어의 Repository 를 Imprementation 한다.
- Domain 레이어의 Entity 를 상속해서 Model 을 만든다.
Domain Layer
- 다른 Layer 에 의존하지 않는다.
- 가장 중요한 부분으로 중요 정책을 결정한다.
- Usecase 하나는 여러개의 Repository 를 사용할 수 있다.
Presentation Layer
- Entity 를 사용한다.
- Usecase 를 사용한다.
- Bloc 는 여러개의 Usecase 를 사용할 수 있다.
Comments