2022. 9. 20. 22:50ㆍ[Android APP] feat. Kotlin/Kotlin 공부
개요
회사 공고나 개발자 커뮤니티에 보면 디자인 패턴이라는 말이 많이 나온다.
그 중에서도 MVVM과 MVP, MVC 아키텍쳐가 가장 많이 언급되고 사용된다고 하니 공부해보기로 했다.
디자인 패턴이란?
소프트웨어 공학에서 소프트웨어 디자인에 특정 문맥에 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다.
소스나 기계 코드로 바로 전환될 수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다.
- 개발을 하다보면 반복적으로(공통적으로)문제를 해결해야 하는 경우가 생기는데 이럴 때 디자인 패턴을 활용한다고 한다.
장점 : 디자인 패턴을 이해하고 적절하게 사용한다면 유지 보수 및 많은 사람들에게 설득력 있는 코드가 만들어질 수 있다.
본문
1. MVC(Model + View + Controller)
Model : 앱에서 사용되는 데이터와 그 데이터를 처리하는 부분, 재사용이 가능하다.
View : 사용자에게 보여지는 UI
Controller : 사용자의 입력(Action)을 받고 처리하는 부분, 데이터 변경이나 상호작용을 관리하여 View와 Model을 업데이트 시켜준다.
구조
1. 사용자가 Action을 취하면 Controller로 들어오게 된다.
2. Controller는 사용자의 Action을 확인한 후, Model을 업데이트 한다.
3. Controller는 Model을 나타내줄 View를 선택한다.
4. View는 Model을 이용하여 화면에 보여준다.
특징
- Controller는 여러개의 View를 선택할 수 있는 1:N 구조이다.
- Controller는 View를 직접 업데이트 하지 않는다(Model을 통해 업데이트)
장점
- 가장 단순하며 보편적으로 많이 사용되는 디자인 패턴이다.
- 디자인 패턴을 모르더라도 이해하기 쉽다.
- 작은 어플리케이션 개발을 빠르게 진행시킬 수 있다.
단점
- View의 변경에 따른 Controller의 변경이 빈번하게 일어난다.
- View와 Model 사이의 의존성이 높다.
- 어플리케이션이 커질수록 복잡해진다.
2. MVP(Model + View + Presenter)
Model : 앱에서 사용되는 데이터와 그 데이터를 처리하는 부분, 재사용이 가능하다.
View : 사용자에게 보여지는 UI
Presenter : View에서 요청한 정보로 Model을 가공하여 View에게 전달해주는 부분
구조
1. 사용자의 Action은 View를 통해 들어온다.
2. View는 데이터를 Presenter에게 요청한다.
3. Presenter는 Model에게 데이터를 요청한다.
4. Model은 Presenter에서 요청받은 데이터를 응답한다.
5. Presenter는 View에게 데이터를 응답한다.
6. View는 응답받은 데이터를 화면에 나타낸다.
특징
- Presenter와 View는 1:1 관계이다.
- Presenter는 View와 Model의 인스턴스를 가지고 있다.
장점
- View와 Model의 의존성이 적다.(Presenter를 통해서만 데이터를 전달 받는다.)
- UI와 비즈니스를 분리하고 Presenter로 연결해주기때문에 유닛테스트에 유리하다.
단점
- View와 Presenter 사이의 의존성을 가진다.
- 어플리케이션이 복잡해질수록 View와 Presenter 사이의 의존성이 강해지는 단점이 있다.
- View와 Presenter는 1:1관계이기 때문에 View가 많아질수록 Presenter도 많아진다.
3. MVVM(Model + View + View Model)
Model : 앱에서 사용되는 데이터와 그 데이터를 처리하는 부분, 재사용이 가능하다.
View : 사용자에게 보여지는 UI
View Model : View를 표현하기 위해 만든 View를 위한 Model이다. View를 나타내기 위한 데이터를 처리하는 부분
구조
1. 사용자의 Action은 View를 통해 들어온다.
2. View에 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달한다.
3. View Model은 Model에게 데이터를 요청한다.
4. Model은 View Model에게 요청받은 데이터를 응답한다.
5. View Model은 응답받은 데이터를 가공하여 저장한다.
6. View는 View Model과 Data Binding하여 화면에 나타낸다.
특징
- View Model과 View는 1:N 관계이다.
- Command패턴과 Data Binding 두 가지 패턴을 사용하여 구현되었다.
- Command패턴과 Data Binding을 이용하여 View와 View Model 간의 의존성이 없음
장점
- View와 Model사이의 의존성이 없다.
- Command패턴과 Data Binding을 사용하여 View와 View Model간의 의존성 또한 없다.
- 각각의 부분은 독립적이기 때문에 모듈화에 유리하다.
단점
- MVVM 패턴 View Model의 설계가 복잡하고 어렵다.
- Databinding, LiveData 등 다른 라이브러리를 필수적으로 알아야한다.
'[Android APP] feat. Kotlin > Kotlin 공부' 카테고리의 다른 글
Android Kotlin : GlobalScope와 CoroutineScope (0) | 2022.10.22 |
---|---|
Android Kotlin : MultiPart를 이용해 서버로 파일 보내기 (2) | 2022.09.21 |
Android Kotlin : Coroutine과 Thread (0) | 2022.09.15 |
Android Koltin : 비밀번호, 이메일 등 정규식 (0) | 2022.09.12 |
Android Kotlin : 사용자 저장소 권한(Permission) 체크 (0) | 2022.09.12 |