Programming/Develop Pattern

Clean Swift

ilovecoffee 2022. 1. 11. 16:04

ViewController는 화면 업데이트를 담당하고,Interactor는 비즈니스 로직을 담당한다.

Presenter는 Interactor에서 비즈니스 로직을 통해 처리된 데이터를 받아 포맷팅한 데이터를 ViewController에 전달한다.

 

ViewController는 Display Logic Protocol을 채택하여 구현하고, 이를 호출하는 곳은 Presenter에서 한다.

변경된 데이터로 이루어진 화면을 변경해주기 위함이다.

Interactor는 Busness Logic Protocol을 채택하여 구현하고, 이를 호출하는 곳은 ViewController이다.

Presenter는 Presentation Logic Protocol을 채택하여 구현하고, 이를 호출하는 곳은 Interactor이다.

 

메소드를 호출할 때, 작업이 추가될 때마다 파라미터를 하나, 둘 씩 더해가는 데, clean swift는 파라미터를 묶고 하나의 구조체로 선언을 해준다.

파라미터를 구조체 하나만 넘긴다.

 

ViewController는 Interactor로 넘기는 Structure를 Request라고 부르고, Interacotr에서 Presenter로 넘기는 Structure를 Response라고 부른다.

Presenter에서 ViewController로 넘기는 Structure를 ViewModel이라고 부른다.

 

파라미터를 Structure 하나만 넘기는 경우, 기존의 파라미터를 추가 삭제할 때와 다른 차이점이 2가지 정도 발생한다.

  1. 메소드의 타입이 늘어나도, 메소드 선언을 바꿔줄 필요가 없다.
  2. 이 타입 선언들만 보더라도 데이터 흐름이 어떤지 대략적으로 쉽게 파악이 가능하다.

 

Router는 ViewController의 소유이며, 새 화면으로의 전환을 담당한다.

새 화면으로 전환하기 위해서는 2가지 일을 해주어야 하는 데,

  1. 새 화면을 띄워준다.
  2. 새 화면이 필요한 데이터를 주입시켜준다.

Woker는 Interactor이 소유하고 있으며, Interactor는 재 사용성이 없다. Presenter도 없다.

컴포넌트(Interactor, Presenter)이 VIP Cycle에 묶이기 때문에 재 사용성이 없다.

공통 로직 같은게 있다면, 별도의 Worker 클래스로 분리하는 것이 좋다.

공통 로직이 없더라도 데이터가 커지면 여러개 Worker를 두고 역할을 나누는 것이 좋다.

 

 참고 :

https://youtu.be/3jRxPM3xBnY

https://choi-log-life.tistory.com/entry/iOS-Clean-Swift-VIP-Pattern