디자인 패턴은 개발 도중 발생한 문제에 대해 정리하여 각 상황에 맞게 쉽고 간편하게 적용해서 사용할 수 있도록 돕기위한 패턴으로, 수단 중에 하나입니다.

 

 

MVC 패턴 (Model View Controller)

구성요소를 세가지 역할로 구분한 패턴입니다.

페이지, 데이터 처리, 컨트롤 영역의 3가지 파트를 나누어 담당하게 되면 유지보수성, 확장성, 유연성이 증가합니다.

또한 각 역할의 파트가 정해져있기 때문에 중복코딩이 줄어드므로 효율적입니다.

 

조작은 Controller로 하며 Model을 통해 데이터를 가져옵니다.

그리고 이것을 바탕으로 View를 제어하여 시각적인 것을 사용자에게 노출합니다.

MVC 이미지

Model

애플리케이션의 정보들을 나타내며 이러한 데이터들의 가공을 책임지는 컴포넌트입니다.

즉, 내부 비즈니스 로직을 처리하기 위한 역할을 합니다.

View나 Controller에 종속적이면 안됩니다. 즉 Model이 View나 Controller로부터 데이터를 참조해서 데이터를 가공하면 안된다는 것을 의미하며 Model은 재사용이 가능해야합니다.

 

View

데이터, 객체 입력, 출력을 담당하며 사용자들이 볼 수 있는 화면인 요소(사용자 인터페이스, UI)입니다.

View는 여러개가 존재할 수 있습니다.

Model이 보낸 데이터를 그리기만 해야하며 View에서 따로 저장하면 안됩니다.

해당 데이터 만을 제외하고는 다른 요소를 참조하면 안됩니다.

 

Controller

데이터 Model과 사용자 인터페이스 View를 연결하는 다리 역할입니다.

화면의 로직을 처리하기 위한 역할을 합니다. (사용자가 데이터를 클릭하거나 수정하거나 등의 이벤트를 담당하는 부분)

사용자의 요청을 받아 처리되는 부분이라서 요청을 분석, Model과 View에 업데이트를 요청합니다.

따라서 Model과 View의 존재를 알고 있어야합니다. (Model과 View 두개가 직접적으로 의존하는 것을 막는 역할)

 

한계

Controller하나에 다수의 Model, View가 존재하는 경우가 생길 수 있는데, 

이것을 Massive View Controller (대규모 MVC 어플리케이션) 이라고 하며 테스트나 분석이 어렵습니다.

MVC 한계 출처: https://medium.com/@jang.wangsu/%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4-mvc-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80-1d74fac6e256 

복잡해질 수록 Controller 분리가 어려워서 생기는 문제입니다.

Controller는 프로그램 실행 시 로직이 병렬적으로 분기된다면 하나일 필요가 없으며 여러개를 둬도 상관이 없고 더 깔끔한 설계가 될 수 있습니다.

 

 


 

참조해서 읽어 볼 글

velog.io/@ljinsk3/MVC-%ED%8C%A8%ED%84%B4

https://medium.com/@jang.wangsu/%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4-mvc-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80-1d74fac6e256 

'개념' 카테고리의 다른 글

세션 스토리지(Session Storage)  (0) 2019.06.05
로컬 스토리지(Local Storage)  (0) 2019.06.05
쿠키(Cookie)  (0) 2019.06.05
CND이란?  (0) 2019.05.16
CSS를 이용해 객체 가운데 위치하기!  (0) 2018.10.29
구글 API KEY생성하는 법  (0) 2018.10.26
void 0 이란?  (0) 2018.10.23
let 키워드, const 키워드  (0) 2018.10.23

+ Recent posts