진짜 개발자
본문 바로가기

Software Engineering/디자인패턴(Design Pattern)

Design Pattern - MVC 패턴이란

728x90

MVC 패턴이란

  • Model , View, Controller의 약자
  • 기존의 어플리케이션을 만들기위한 코드를 3가지 구성(Model, View, Controller)으로 나누어 개발과 유지보수의 편리함을 위한 디자인 패턴

 

 

왜 MVC로 나누나?

  • 하나의 어플리케이션을 만들기위한 코드가 모두 한곳에 모여있다고 한다면 디자이너가 어플리케이션의 디자인을 바꾸기 위해서 코드의 디자인 부분과 제어를 위한 부분을 모두 살펴보고 그것에 대해 모든 지식이 있어야 필요한 부분만을 바꿀 수 있고 문제를 발생 시키지 않을 것이다 또한 개발자제어를 위한 부분을 수정하기위해 어플리케이션을 보더라도 디자인을 위한 코드와 제어를 위한 코드를 구분할 줄 알아야한다
  • 반대로 제어를 위한 코드, 뷰를 위한 코드, 데이터 제어를 위한 코드, 를 분리한다면 각각의 작업을 수행함에 해당 분야에만 집중할 수 있기 때문에 코드를 보기에 더욱 편리하고 작업 효율이 올라갈 것이다

 

 

 

Model 이란?

- 어플리케이션의 정보, Data를 나타낸다

규칙

  1. 표현을 위해 사용될 모든 데이터를 가지고 있어야 함

    - 예를 들어 네모 박스안에 글자를 표시할 때, 네모박스의 위치정보, 네모박스의 크기 및 색, 글자의 내용 글자의 포맷 등을 모두 가지고 있어야 한다.

  1. View, Controller에 대한 어떠한 정보도 가지면 안됨 (결합도를 낮추기 위함)

    - 즉, 데이터 변경이 일어났을때 Model에서 UI를 직접 수정할 수 있도록 View를 참조하는 속성값을 가지면 안된다는 뜻

 

  1. 변경에 대한 처리 방법을 구현해야 한다. (재사용성 증가의 목적)

    - Model에 대한 변경이 발생하면 이벤트를 발생시켜 누군가에게 전달해야하며 , 모델을 변경할 수 있도록 요청하는 이벤트를 처리하는 방법을 구현해야 한다.

    - 재사용이 가능해야 한다.

 

View 란?

- 사용자 인터페이스 요소를 나타냄

- 사용자로부터의 입력, 그리고 보여주는 출력을 담당

규칙

  1. Model 정보를 따로 저장해서는 안된다.

    - 화면에 글자를 표시하기 위해 Model로 부터 데이터를 전달받을 때 그 데이터를 따로 저장하면 안된다.

 

  1. Model, Controller와 같은 다른 구성요소를 몰라야 한다.

    - View는 Model로 부터 데이터를 받아 화면에 표시하는 역할만을 담당하며 다른 요소를 참조하거나 어떻게 동작하는지를 알아서는 안된다.

 

Controller 이란?

- 데이터와 사용자 인터페이스를 잇는 다리역할로 사용자가 데이터를 클릭하고 수정하는 등의 이벤트들을 처리하는 부분

규칙

  1. Model, View를 알고 있어야 한다.

    - ModelView는 서로를 모르고, 변경을 외부로 알려야 하며, 변경에 대한 처리 방법만을 정의하고 있다 이때 이들을 Controller를 통해 중재하므로 ControllerModel, View 를 알고 있어야 한다.

 

 

MVC 패턴의 동작

\1. Client가 Browser를 통해 View를 보고 View를 통해 Controller를 조작한다

\2. Controller에서 필요시 Model을 참조하여 값을 바꾸거나 값을 가져온다

\3. Controller에서 적절한 View를 선택하고 전달받은 Model의 데이터를 View에 같이 보낸다

\4. View에서는 Model을 적절히 활용하여 화면을 보여준다