알아보기 - MVC 디자인패턴

GGAGURI·2021년 5월 1일
0

MVC?

MVC(Model-View-Controller)는 소프트웨어 공학에서 흔히 사용되는 소프트웨어 디자인패턴

소프트웨어 디자인패턴(Software Design Pattern)

소프트웨어 공학에서 설계 측면에서 자주 발생하는 문제를 효율적으로 대처하기 위한 '해결패턴'이라고 할 수 있다. 즉, 특정 상황에서 자주 발생하는 문제들을 해결하는데 쓰이는 템플릿이라고 할 수 있다. 디자인패턴은 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 방법이다.

MVC 디자인패턴

MVC는 소프트웨어 디자인패턴 중 사용자 인터페이스, 데이터 및 논리 제어를 유연하게 구현하는데 널리 사용되는 패턴이다. 특히, 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있다. 모델-뷰-컨트롤러로 구분하는 '업무의 분리'를 통해 관리의 향상과, 추후 유지보수와 재사용성 측면에서 강점을 보인다.(유지보수성, 확장성, 유연성 등)

모델-뷰-컨트롤러

모델(Model) : 간단히, 데이터와 비즈니스 로직을 관리한다. 특히 어플리케이션이 포함해야할 데이터가 무엇인지를 정의하고, 상태가 변경되면 뷰나 혹은 컨트롤러에 응답하기도 한다.
뷰(View) : 말 그대로 '보여지는' 영역이다. 화면에 표시되는 글자부터, 체크박스, 테이블 등 시각적 요소를 담당한다. 모델에게 질의하여 데이터를 받고, 사용자에게 보여지는 화면을 정의한다.
컨트롤러(Controllor) : 어플리케이션의 사용자로부터 입력에 대한 응답으로 모델이나 뷰를 업데이트하는 로직을 포함한다. 단순히 데이터를 다른 방식으로 표시하기 위해 바로 뷰를 통해 처리하기도 한다. 쉽게 말해 문제를 해결하기 위한 과정이 구현된 곳.

고려해야 할 사항

모델(Model) ex) MariaDB, MongoDB...
- 애플리케이션 로직에 사용되는 모든 데이터가 정의되어야 한다.
- 모델이나 컨트롤러와 같은 다른 구성 요소를 알 필요가 없고, 몰라야 한다.\
- 변경이 일어났을 때 필요한 요소에 통지하는 방법이 정의되어야 한다.
뷰(View) ex) HTML, JSP...
- 모델이 가지고 있는 정보를 저장하는 로직이 없어야 한다.
- 모델이나 컨트롤러와 같은 다른 구성 요소를 알 필요가 없고, 몰라야 한다.
- 변경이 일어났을 때 필요한 요소에 통지하는 방법이 정의되어야 한다.
컨트롤러(Controller)
- 모델이나 뷰에 대해서 알고 있어야 한다.(원활한 중재를 위함)
- 모델이나 뷰의 변경을 모니터링 해야 한다.(각각의 구성 요소에게 통지)

참고

MDN MVC
위키백과 MVC

profile
주니어 개발자

0개의 댓글