[flutter] Clean Architecture 에서 사용하는 개념 잡고가기
Clean Architecture 란?
프로그램을 4단계의 계층으로 나누어 의존성 방향을 외부에서 내부로만 향할 수 있도록 구조체를 만들어 개발하는 것이다.
영화 정보를 보여주는 프로그램을 예시로 들어 각 개념과 대입을 해보자면
Entities
- 비즈니스의 핵심 개념을 나타는 객체
- Movie(영화 정보) class
Use Cases
- 프로그램의 특정 기능
- 여러 영화의 정보 확인하기, 영화의 구체적인 정보 확인하기
Interface Adapters
- Use Cases 와 Frameworks and Drivers 사이의 중간 역할(=Adapter)
- Repository, ViewModel
Frameworks and Drivers
- 시스템의 핵심 업무와는 상관 없는 계층
- DB, 외부 API
Flutter 를 위의 Clean Architecture 계층으로 구분하면 다음과 같이 분리할 수 있다.
Presentation Layer
- UI 와 같은 화면 표시 및 사용자 입력 처리 계층
- ViewModel: UI 의 상태를 관리하고 비즈니스 로직 정의
- Widget: 사용자에게 보여지는 View
Domain Layer
- 시스템의 비즈니스 로직을 담고있는 계층
- Entity: 데이터 모델 클래스
- UseCase: Entity 로 해야할 일의 정의
Data Layer
- 데이터 소스와 관련된 작업을 처리하는 계층
- Repository: 데이터 처리 방식 결정, Entity 전달
- DataSource: 네트워크 통신, 내부 DB와 연동 등을 통해 데이터 CRUD