-
아키텍처 패턴 - RAW, MVC, MVP안드로이드 2019. 4. 12. 20:04
Intro
아키텍처 패턴이 필요한 이유는 무엇일까?
개발자에게 프로그래밍을 할때면 코드의 클린성(..?)은 가장 중요하게 여기는 요소 중의 하나라고 누구나 공감할 것이다. 그저 간단한 코딩을 하는 경우에라면 코드의 양이 많지 않고 스스로 개발하는 케이스가 많기 때문에 코드를 깔끔하게 짜는 것이 의미가 없을 수 있겠지만, 일반적으로 사용되는 어플리케이션의 경우에는 코드의 양과 개발 인원이 비약적으로 많아진다. 이러한 경우, 코드의 양이 많기 때문에 각종 클래스, 메서스가 뒤엉켜있고 내가 짠 코드가 다른 사람이 짠 코드가 뒤섞이는 경우도 다분할 것이다. 또한 이렇게 코드가 뒤엉켜있다보면 유닛 테스트를 하기에도 복잡해진다. 그렇기 때문에 이러한 문제들을 해결하고자 모든 것을 분리하여 관리하고 개발하였으며 이런것들을 패턴화 시킨것이 아키텍처 패턴이다.
RAW
일반적인 개발방식
일반적으로 책을 통해서 처음 안드로이드를 배운다면 아래와 같은 코딩 방식을 따를 것이다.
(절대 책을 통해서 배운다고 하는 것이 나쁘다는 것이 아니다.)
RAW Activity
위와 같이 액티비티 내에 이벤트 처리나 뷰에 접근하는 코드들이 다 한곳에 모여있습니다.
현재는 간단하게 firstName과 lastName을 입력하면 fullName으로 변환해주는 것 뿐이지만, 위와 같은 코드들이 하나 둘 만들어지게되면 모든 코드들이 액티비티 내에 복잡하게 자리를 잡을 것이고 이는 결국 가독성과 유지보수가 힘든 코드로 변모하게 됩니다. 이에 따라서 다양한 아키텍처 패턴들이 도입되었습니다.
MVC
MVC는 Model-View-Controller의 약자입니다.
개발할 때, Modle, View, Controller로 나누어 개발하는 방식으로 비즈니스 로직과 UI를 분리시켜 서로 영향없이 개발할수 있도록 해줍니다.
Model은 데이터를 나타내고
View는 화면의 요소와 이벤트 처리를 담당하며
Controller 는 로직을 관리하며 모델을 업데이트 합니다.
아래의 코드를 보겠습니다.
아래의 코드를 보면 fullName을 만들어내는 로직을 Model(User Class)로 분리하였기 때문에 Activity는 View와 클릭 이벤트만을 처리하는 모습으로 바뀌었습니다. 하지만 MVC의 경우, Model과 View사이의 의존성이 발생하기 때문에 앱이 커질수록 복잡해지게 됩니다.
MVC Activity
User Class
MVP
MVP는 Model-View-Presenter의 약자이며, 기존의 MVC의 단점인 View와 model간의 의존성을 없애기 위해 고안된 개발론입니다.
MVC와 다르게 Model과 View는 서로 관여되지 않고 오로지 Controller를 통해서만 작업이 이루어집니다.
아래의 코드를 보시겠습니다.
MVP Activity
Contract
Presenter
이처럼 View 와 Model을 분리함으로서 Presenter가 완벽히 중간자 역할을 하는것을 볼수 있습니다.
또한 유닛 테스트를 하기 수월해지는 장점이 있습니다.
위의 소스코드는 깃허브에 올려놨습니다.
세계 최강을 꿈꾸는 안드로이드 Front-End 개발자입니다.
Github 주소: github.com/rkswlrbduf
이전 블로그 주소: blog.naver.com/rkswlrbduf => 블로그 이전중...
'안드로이드' 카테고리의 다른 글
ViewPager와 PageTransformer를 활용한 Intro Screen (0) 2019.04.16 CustomView - BottomNavigationView (0) 2019.04.14 안드로이드 생명주기-Android LifeCycle (0) 2019.04.12 Android Q - RoleManager (0) 2019.04.12 Linked List VS Array List (0) 2019.04.12 댓글