본문 바로가기

Android/Architectures

디자인 패턴 (Design Patterns)


디자인 패턴에는 MVC , MVVM, MVP 패턴 등 여러가지가 있다. 
현재 나는 ButterKnife, Otto 라이브러리를 같이 이용해서 MVC 패턴을 적용해보았다.

이 모든 패턴들은 유지보수 관리도 중요하지만, 절대적으로 View와 로직 간의 분리인 듯 하다. 
따라서 나는 MVC 패턴유형을 선택하였다. 

model && view 폴더를 새로 잡아서 각각의 Activity에 대해 매칭되는 View와 Model을 생성하였고. 

View 클래스에는 View에 관련된 작업을 하게되며, 
Model 클래스에는 로직에 관련된 작업을 하게된다. 

Activity에서는 컨트롤러의 역할을 하게되는데, 호출시에는 View객체의 매개변수로 Model객체를 넣어줌으로써 코드의 간결화를 이루어낼 수 있다. 

하지만 이렇게 분리를 하다보면 

새로운 Activity를 띠우기위해 Intent를 사용하기도 하고, Context를 사용하는 부분으로 인해 
뷰와 로직간의 완전한 구분이 어려움을 느꼈다. 

따라서 Intent를 다뤄야 하는 부분의 경우는 activity 에서 작업을 하도록 하였고 . 이때 Otto(EventBus) 를 이용하여 View 또는 Model 클래스에서 호출할 수 있도록 하였다. 

이렇게 하니 View와 로직간의 경계가 생각보다 좀 더 명확해지고 코드도 간결해졌다. 


실제 소스 구조 


activities / adapters / base / fragments / network / popup (각 커스터마이징한 팝업) / utils(자주 쓰이는 또는 내부적으로 필요로 하는 유틸 - 예를 들면 암호화, 날짜 관리, 버전관리, 이벤트 관리 등) / widgets(커스터마이징 한 UI 위젯) / views / viewmodel (로직) / datamodel (Retrofit 에 따른 beans 클래스 모음) 


이렇게 구성해 보았다. 


하지만 최근들어 MVP 패턴이 좀더 많이 쓰여지는 것 같아서 MVP 패턴도 한번 적용해봐야 할 것같다. MVP 패턴의 경우도 View & 로직 & Data 관계를 Presenter(인터페이스 집합) 를 통해서 서로 주고받고 하는 것으로 보여진다. 



다음 글에서는 MVP를 적용해 본 후기를 올리도록 하겠습니다. 



'Android > Architectures' 카테고리의 다른 글

Android architecture  (0) 2018.03.26