Clean Swift
2021年03月07日
Clean Swift
Clean Architecture 에서 나온 Architecture인 Clean Swift는 위와 같은 view - interactor - presenter 즉 VIP cycle 을 가진 architecture이다.
Clean swift 의 제어흐름
위의 그림에서 나타낸 제어 흐름을 글로 설명하면
- view에서 interactor 에게 business logic 을 요청
- interactor는 business logic 또는 business logic 을 수행하는 worker 에게 도움을 요청
- worker 에서 networking, database 등 business를 다루고 작업이 완료
- 완료된 작업을 interactor는 presenter를 호출하여 view에 표시
와 같이 동작한다.
이러한 모든 작업은 interactor가 presenter 에게 종속되지 않도록 의존성을 되돌리기 위해 swift protocol 을 사용한다.
즉 interactor가 presenter 에 의존하는 것이 아닌 protocol에 선언된 메서드를 호출한다.
Clean Swift Component
View
- 뷰에 관련된 로직만 처리
- 비지니스 로직 관련은 interactor에게 요청
Interactor
- business logic 수행
- 요청된 것이 완료되면 Presenter에게 데이터를 전송
Presenter
- interactor로부터 데이터를 받아서 UI를 위한 모델로 가공
- 가공된 모델을 View에게 전달
- presenter 에서 간단한 포맷팅을 하거나 worker 에게 포맷팅 작업을 인계할 수 있다.
Worker
- interactor에서 수행해야하는 business logic 들이 실제 수행되는 곳이다.
Model
-
request, response, viewmodel 를 struct 로 표현한다.
-
Request
view controller 와 request model을 구성하고 interator에게 전달request model은 text field의 텍스트 입력, picker 에서 선택된 값과 같은 user input들이 대부분 포함된다
-
Response
interactor 가 request에 대한 작업을 마친 후, response model에서 result를 캡슐화하고 presenter 로 전달한다.
-
View Model
Presenter 가 Interactor로부터 response를 받은 후 string, int 와 같은 raw data 유형으로 결과를 포맷하여 view model로 넣는다. 그런 다음 view model을 다시 view controller 로 전달하여 디스플레이 한다.
-
-
raw data model을 사용하는 것이 아닌 이러한 struct 구조의 data model을 사용하여 얻는 이점
- business logic 이 변경되여 기본 데이터 모델이 변경될 때, 코드 베이스 전체를 업데이트할 필요가 없다.
결론
- VIP Cycle 을 도입하여 단방향의 제어흐름을 갖게해준다.
- protocol 을 이용해 구현되어 있기 때문에 모의 데이터를 이용한 unit test가 쉽다.