본문 바로가기

혼자하는 공부/노트

디자인 패턴 관련 용어

●MVC 패턴 

- Model - View - Controller의 약자

- 하나의 어플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴

- Model 은 "무엇"을 할 것인지를 정의

- Controller는 모델이 "어떻게" 처리할 지를 알려주는 역할 

- View는 화면에 "무엇"인가를 보여주기 위한 역할

 

장점

 - 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행할 수 있게 하는 장점이 있다.

단점

- View와 Model이 서로 의존성을 띄게 함.

 

●MVVM 패턴

- Model, View, View Model 로 구성

- View는 UI에 관련된 것

- View Model은 View가 사용할 메서드와 필드를 구현하고, 뷰에게 상태 변화를 알리는 역할

- Model은 비즈니스 로직과 유효성 검사와 데이터를 포함하는 앱의 도메인 모델

- UI로부터 비느지스 로직과 프레젠테이션 로직을 분리하는 목적을 이룸

 

장점

- 뷰 모델이 모델과 뷰 사이의 어댑터로서 변경이 생겼을 때 변경을 최소화할 수 있다.

- 모델과 뷰 모델이 뷰로부터 독립적이다

○ 뷰 모델과 모델을 플랫폼 독립적으로 개발할 수 있다.

○ 테스트하기 쉽다

- 개발 기간 동안 개발자와 디자이너가 동시에 독립적으로 작업할 수 있다.

○ UI 디자인이 나오지 않았더라도 미리 정의된 모델과 뷰 모델을 먼저 개발할 수 있기 때문에 병렬적인 업무 프로세스가 가능하다.

 

단점

- 거대하고 복잡한 앱을 위해서 고안된 디자인 패턴인 만큼, 소형 앱에서 사용하게 되면 오버헤드가 커진다.

- 앱이 너무 거대해지면 앱의 메모리 소모가 데이터 바인딩때문에 커진다.

 

● MVP 패턴

- Model, View, Presenter

- View와 Model을 완전히 분리해서 사용하기 위해 등장

- View는 실제 View에 대한 직접적인 접근을 담당

- Presenter 는 본질적으로 MVC의 Controller와 같지만 뷰에 연결되지 않고 인터페이스로 연결된다는 점이 다르다. View와 Model 사이의 자료 전달 역할을 함

- Model은 앱 데이터 및 상태에 대한 비지니스 로직을 수행

 

장점 

- 매우 깔끔한 코드 작성 가능

- Model과 View간의 결합도를 낮추면 해당 부분만 코드 수정하면 되기 때문에 확장성이 좋아지고 동시에 유닛 테스트시 코드를 작성하기 편리해짐

- UI, Data 파트를 나누기 떄문에 해야 할 일이 명확하고 쉽고 빠르게 코딩 가능

 

단점

- 애플리케이션이 복잡해질수록 View와 Presenter 사이의 의존성이 강해짐

- 어느정도 시간이 지남에 따라 추가 비즈니스 로직이 집중되는 경향이 있음

 

● MVW 패턴

- Model, View, Whatever

- Whatever는 "적합한 것"을 의미

- AngularJS 이 개념을 선언함

 

'혼자하는 공부 > 노트' 카테고리의 다른 글

객체 지향 프로그래밍 용어 정리  (0) 2021.06.16