1. 디자인 패턴이란?
디자인 패턴이란 프로그램 개발 시에 자주 부딪히는 문제 상황에 대한 일반적이고 재사용 가능한 추상화된 해결책을 말한다. 즉 반복적으로 일어나는 문제들을 어떤 방법으로 풀어나갈 것인가를 고민하는 해결책이라는 뜻이다.
디자인 패턴을 사용하면 개발자들끼리의 협업이 편리해지며 코드의 질과 효율성을 높일 수 있다.
2. 아키텍처란?
소프트웨어를 구성하는 구성요소 모듈, 컴토넌트, 서브 시스템 들간의 관계를 관리하는 시스템의 구조이자 소프트웨어의 설계와 업그레이드를 통제하는 원칙이다.
3.안드로이드 아키텍처 패턴
안드로이드 개발을 할때 많이 이용하고 있는 아키텍처 패턴 3개가 존재한다.
● MVC (model-view-controller)
● MVP (model-view-presenter)
● MVVM (model-view-viewmodel)
채용공고에서 많이 보이는 패턴은 MVVM패턴으로 가장 많이 쓰이는 패턴이며 MVC, MVP의 단점을 보완하기 위해 나온 패턴이라고 한다. 하지만 더 나은 안좋은 패턴이 정해져 있지는 않다.
4. About MVC
Model
● 애플리케이션에서 사용되는 데이터, 상태, 비즈니스 로직을 포함하고 있다. 상태는 ui상태를 의미하고 비즈니스 로직은 앱에 필요한 동작을 수행하기 위해서 데이터를 처리하기 위한 알고리즘이다.
View
● 사용자에게 보여지는 화면, ui 요소를 담당한다. 안드로이드에서는 xml 파일이 이에 해당한다. 단순히 화면을 보여주는 역할만 하고 클릭시 어떤 함수가 호출되어야 하는지 정도를 설정할 수 있다.
Controller
● Model과 View의 가교 역할을 한다. view가 사용자 입력을 받으면 이를 controller에게 알린다. 이 알림을 받으면 controller가 적절한 동작을 한다. 안드로이드에서는 주로 Activity나 Fragment로 표현된다.
MVC 동작순서
1) 사용자의 Action들은 Controller에 들어온다.
2) Controller는 사용자의 Action을 확인하고 Model을 업데이트한다.
3) Controller는 Model을 나타내줄 View를 선택한다.
4) View는 Model을 이용하여 화면을 나타내게 된다.
MVC 패턴 장점과 특징
● Controller는 Model에 직접적인 영향을 끼칠 수 있다.
● 단순한 패턴이기 때문에 학습 장벽이 낮고 널리 사용된다.
MVC 패턴의 단점
● View와 Model 사이에 의존성이 존재한다.
● Controller이 안드로이드에 종속되기 때문에 테스트가 어려워진다.
● Controller에 많은 코드가 모이게 되어 Activity가 비대해진다.
● 안드로이드 특성상 Activity가 View표시와 Controller 역할을 같이 수행하기 때문에 두 요소의 결합도가 높아진다.
5. MVP
View와 Presenter, Presenter와 Model간의 서로 상호작용이 이루어진 구조이다. View와 Model간의 의존성을 제거한 구조이기 때문에 View와 Model은 서로 알지못하고 이들은 Presenter 을 통해 상호작용한다.
Model
● 애플리케이션에서 사용되는 실제 데이터 및 데이터 조작 로직을 처리하는 부분
● View에 의존적이지 않다.
View
● 사용자에게 보여지는 UI 부분
Presenter
● View에서 요청한 정보를 Model로부터 가공하여 View로 전달하는 부분
● View와 Model 사이를 이어주는 역할을 한다.
MVP 동작순서
1) 사용자의 동작들은 View를 통해 들어온다,
2) View는 데이터를 Presenter에게 요청한다.
3) Presenter는 Model에게 데이터를 요청한다.
4) Model은 Presenter에서 요청받은 데이터를 응답한다.
5) Presenter는 View에게 데이터를 응답한다.
6) View는 Presenter가 응답한 데이터를 이용하여 화면을 나타낸다.
MVP 패턴의 특징 및 장점
● Presenter와 View는 1:1관계이다.
● View와 Model은 서로 알 필요가 없다,
● View와 Model은 의존성이 없다. 왜냐하면 Presenter를 통해서만 데이터를 전달받기 때문이다.
MVP 패턴의 단점
● View와 Presenter가 1:1로 강한 의존성을 가지게 된다.
● 각각의 View마다 Presenter가 존재하게 되어 코드량이 많아져 유지보수가 힘들 수 있다.
6. MVVM
Model
● 애플리케이션에서 사용되는 실제 데이터 조작 로직을 처리하는 부분
● View에 의존적이지 않다.
View
● 사용자에게 제공되어지는 UI 부분
ViewModel
● View에서 사용되는 데이터를 관리하는 View를 위한 Model
● View에 종속되지 않는다.
MVVM 동작순서
1) View에 입력이 들어오면 Command 패턴으로 ViewModel에 명령을 전달한다.
2) ViewModel은 필요한 데이터를 Model에 요청한다.
3) Model은 ViewModel에 필요한 데이터를 응답한다.
4) ViewModel은 응답받은 데이터를 가공해서 저장한다.
MVVM 패턴의 장점 및 단점
● View와 Model 사이의 의존성이 없다.
● View는 ViewModel을 알지만 ViewModel은 View를 알지못하고 ViewModel은 Model을 알지만 Model은 ViewModel을 알지 못한다.
● 한쪽 방향으로만 의존관계가 있어 각 모듈별로 분리하여 개발할 수 있다.
● 모듈화 개발에 적합한 만큼 테스트가 수월한다.
● 학습장벽이 높다는 단점이 있다.
● 간단한 앱을 만들때 이 패턴을 사용할 경우 코드가 어려워지고 복잡해진다.
'Frontend > Kotlin' 카테고리의 다른 글
MVVM 패턴 적용기(1) (0) | 2023.07.29 |
---|---|
About DataBinding (0) | 2023.07.29 |
Unit 7 (0) | 2023.01.22 |
Unit 7-2(데이터 베이스 프로그램) 강의정리 (0) | 2023.01.21 |
Unit 7-1 강의정리 (1) | 2023.01.21 |