달달한 스토리

728x90
반응형

오늘은 MVC패턴에 대해 공부를 하여

 

공부한 내용을 정리하고자 합니다.

 

MVC패턴은 디자인 패턴

디자인 패턴 중 하나인 MVC패턴은 프로그램을 개발하는 중에

 

문제점들이 나타날 때, 그러한 문제점들을 잘 정리해서

 

상황에 따라 적용해서 쓸 수 있게 만든 규약이다.

 

그 예가 바로 프레임워크나 라이브러리 같은 녀석들입니다.

 

예를 들어 어떤 데이터를 만들고 이 데이터를 수정할 로직을 짜고,

 

또한 이 데이터의 인터페이스 즉, 보여주는 부분을 만들 때,

 

이 모든 것들이 한꺼번에 정의가 되어있다면,

 

정말 유지 보수하기 힘들어집니다.

 

그래서 한마디로 디자인 패턴이란 이러한 불편한 점들을

 

도와주는 방법이라고 말할 수 있습니다.

 

그중에서는 스트래티지 패턴, 옵서버 패턴 등이 있고,

 

그것들 중 하나가 바로 MVC패턴인 것입니다.

 

MVC는 무슨 뜻일까?

M은 Model,

 

V는 View,

 

C는 Controller입니다.

 

출처 : https://medium.com/@joespinelli_6190/mvc-model-view-controller-ef878e2fd6f5

그림으로 설명드리면 이해가 빠르실 겁니다.

 

사용자가 Controller에게 요청을 하면,

 

Controller는 Model에게 정보를 요청하여 받은 다음,

 

시각적으로 그 정보를 처리하는 View에게 전달해

 

시각적으로 사용자에게 보이게 되는 것입니다.

 

모델(Model)의 특징

모델이란 애플리케이션의 정보와 데이터를 나타내고,

데이터베이스, 처음 정의하는 상수, 초기화 값, 변수를 뜻합니다.

게다가 데이터나 정보들의 가공을 책임지는 컴포넌트라고 합니다.

 

모델(Model)의 규칙

1. 사용자가 편집할 수 있는 모든 데이터를 가져야 한다.

 

 

2. 사용자가 뷰나 컨트롤러에 대한 정보를 알아선 안됩니다.

 

 

3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 합니다.

 

 

 

뷰(View)의 규칙

1. 모델이 가지고 있는 정보를 따로 저장해서는 안됩니다.

 

 

2. 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 합니다.

 

 

3. 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 합니다.

 

 

여기까지는 둘의 성격이 비슷합니다.

 

하지만, 컨트롤러는 많이 다릅니다.

 

 

컨트롤러(Controller)의 규칙

1. 모델과 뷰에 대해 알고 있어야 합니다.

 

 

2. 모델이나 뷰의 변경을 동시에 볼 수 있도록 모니터링해야 합니다.

 

 

즉, 모델과 뷰에 둘 다 관여를 해야 하는 컨트롤러의 규칙이라고 할 수 있습니다.

 

MVC 패턴의 장점

장점은

 

개발 로직과 디자인 부분의 분리로 개발자와 디자이너 간의 업무 충돌이 감소입니다.

 

아무래도 일을 나누어서 각각 수행하는 부분에서 집중하다 보니,

 

생기는 장점이라고 생각합니다.

 

각각에 수행하는 역할이 구분되어, 조금 복잡해도 가독성과 생산성이 뛰어나다고 할 수 있습니다.

 

단점

단점은 복잡하게 보일 수 있다는 점입니다.

 

그리고, 모델과 뷰는 완벽하게 분리가 어려운 점입니다.

 

둘의 의존성이 완벽히 분리될 수 없기 때문에, 패턴이 모호해지고, 변형이 올 수 있습니다.

 

 

어디에 쓰이나요?

구글의 AngularJS나 php의 코드 이그나이터

 

그리고, python의 django,

 

facebook의 react의 패턴에 쓰입니다.

 

 

MVC패턴의 의의

의의는 어떤 일들을 잘 분담해서 나눌 것인가입니다.

 

역할을 잘 나누어서 일의 효율성을 올리는 것이 제일 중요한 목표이지 않나 싶습니다.

 

728x90
반응형

'Programing > Web' 카테고리의 다른 글

MDN사이트  (0) 2020.12.12
클라우드 컴퓨팅(Cloud Computing)  (0) 2020.11.24
웹 처음 만들 때 순서와 기획 그리고 Interface(API, UI)  (0) 2020.11.24

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading