본문 바로가기
Android

[Android] 디자인 패턴

by Ejay 2022. 7. 27.

처음 안드로이드를 접했을 때 디자인패턴이라는 것을 하나도 모른 상태에서 기능 구현만을 집중 하다보니 코드의 가독성도 나빠지고 유지보수도 어렵게 되었다. 남들은 이렇게 안하겠지 하고 알아보니 안드로이드에 디자인 패턴이라는 것이 있었다. 나는 그 동안 MVC를 사용했지만 MVC를 사용하는 것 조차도 모른 상태에서 사용을 하고 있었다.

혼자서 하는 프로젝트라면 문제점이 있는 부분을 정확히 짚어 수정을 할 수 있겠지만, 여러 사람과 협업을 하게 되는 상황이 온다면 이해도가 부족할 것이고 원하는 부분을 단번에 찾아 수정하기도 여간 쉬운일이 아닐 것이다.

구글링을 하다보니 디자인패턴을 알게 되었고 아래에 정리를 해보겠다.

 

디자인 패턴

 

디자인 패턴이란 소프트웨어 공학의 개념이며 객체지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴이다.

 

MVC (Model - View - Controller)

 

Model : 데이터, 상태, 비즈니스 로직을 다룬다. View나 Controller에 묶여 있지 않아  재사용 가능하다.

View : 화면 구성을 담당하는 역할을 한다. 

Controller : Model과 View를 서로 연결해주는 역할을 하고 유저의 행동을 처리하는 역할까지 하며 액티비티나 프래그먼트라고 볼 수 있다.

 

MVC의 장점이라고 하면 완벽하게 모델과 뷰를 분리해주고 쉽게 테스트 할 수 있다는 점이 있다. 하지만 프로젝트를 수정하거나 새로운 기능을 추가할 때 많은 코드가 컨트롤러에 모이게 되어 가독성이나 유지보수에 어려움이 있다.

 

MVP (Model - View - Presenter)

 

Model : 데이터, 상태, 비즈니스 로직을 다룬다. View나 Controller에 묶여 있지 않아  재사용 가능하다.

View : 이벤트가 발생하게 되면 Presenter로 알린 후 반환받은 값에 따라 UI를 갱신한다.

Presenter : View에서 전달받은 이벤트를 처리하여 다시 View로 반환하며 Model에 데이터 요청 이벤트가 올 경우 Model에 요청한 후 받은 데이터를 View에 저장한다.

 

MVP의 장점은 View와 Model의 의존성이 낮아지지만 반대로 앱이 커질 경우 Presenter와 View의 의존성이 강해진다 (1:1)

 

 

MVVM (Model - View - ViewModel)

 

Model : 데이터, 상태, 비즈니스 로직을 다룬다. View나 Controller에 묶여 있지 않아  재사용 가능하다.

View : 레이아웃을 관리하며 ViewModel에서 상태변화가 전달되면 화면을 갱신한다.

ViewModel : View에 연결 할 데이터와 명령으로 구성되어있으며 View에게 상태 변화를 전달한다.

 

MVVM은 컨트롤러의 책임을 분담하여 클래스가 커지는 것을 방지하고 유지보수, 재사용성, 테스트 등을 용이하게 만들 수 있지만 설계가 어려우며 DataBinding등의 추가 공부가 필요하다

 

반응형

'Android' 카테고리의 다른 글

[Android] MVVM 패턴 (feat. DataBinding)  (0) 2022.12.12
[Android] 사용 중인 플러그인  (0) 2022.12.06
[Android] RecyclerView 사용하기  (0) 2021.02.16
[Android] ListView 사용  (0) 2021.02.15