Developer/Pattern

iOS 아키텍처 VIPER

블로blow 2018. 6. 22. 17:14
728x90

iOS 아키텍처를 공부하다 VIPER란걸 접하게 되었고,

VIPER을 정리하는 포스팅이다.


Apple에서는 MVC 아키텍처를 사용을 권하고 그에대한 개발문서도 있다(링크)

하지만 Apple이 설명하는 MVC는 Model이 View에 접근해 화면에 데이터를 뿌려주는게 아니라,

Controller가 View와 Model의 중간역할을 하기 때문에 MVP 패턴에 가깝다고 생각된다.


하지만 이런 아키텍쳐는 Controller(iOS에선 ViewController)에서 하는 일이 너무나 많아진다.

그래서 코드가 길어지고 중복되는 코드가 많아져서 단점이 있다.


그걸 해결하는게 바로 VIPER 이다.

VIPER란 패턴을 처음 접했지만, 기존에 내가 코딩하는 패턴과 크게 다르지 않았다.

역시 패턴은 어떠한 패턴이 중요한게 아니고, 상황에 맞게 간단하고, 이해하기 쉽고, 재사용이 쉬우며, 반복된 코딩이 없는게 중요하다는걸 다시한번 깨닫게 되었다.


일단 VIPER가 무엇이냐면,

View, Interactor, Presenter, Entity, Router의 약자이다.

iOS 프로젝트를 보다 명확하고 모듈화 된 구조로 개발할 수 있는 아키텍쳐이다.





위의 그림은 VIPER의 아키텍쳐이다.

하나씩 설명하자면,

View : Presenter가 보여주는 걸 보여주며, 사용자의 액션을 Presneter로 보내는 작업을 한다.

Interactor : Business logic을 포함하며, API나 DB로 부터 Data를 받아서 Entity(모델)을 생성한다.

Presenter : View에서 유저의 액션을 받고, Interactor에 data를 요청하고 받아서 View 에 그려준다.

Entity : Interactor에 의해 만들어지는 Model 이다.

Router : Navigation logic 을 담당하고 있으며, screen에서 다른  screen으로 화면이 변경되는 부분을 처리한다.



위에서 말했듯,

패턴은 중요하지 않은것 같다.

이해가 쉽고, 간단하고, 재사용이 쉬우며, 반복된 코드가 없는 프로그래밍이 중요하다 생각한다.




728x90