[CS] MVC/MTV 패턴 그리고 MVVM

sing sang song·2021년 12월 31일
0
post-thumbnail

디자인패턴

소프트웨어 개발 방법으로 사용되는 디자인패턴(Desigin Pattern)은 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다.

디자인 패턴은 소프트웨어 설계에 있어 공통적인 문제들에 대한 표준적인 해법과 작명법을 제안하며, 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식이다. 즉, "효율적인 코드를 만들기 위한 방법론"이라고 생각하면 된다.

디자인 패턴은 법칙이 아니라 원칙이다. 원칙이라는 것은 코딩을 할때에 적용해도 되고 적용하지 않아도 된다. 내 코드에 원하는 디자인패턴이 있다면 그것을 자연스럽게 코드에 녹아들게 하기 위해서 여러 패턴들을 적용해보거나, 회사의 개발팀에서 규칙으로 사용되는 디자인패턴들이 있다면 그에 맞춰서 적용하는 것이라 생각한다. "이 코드에는 무조건 이 패턴을 적용시킬거야!" 이것이 아니다.

MVC


Model-View-Controller의 약자

처리 순서는 다음과 같다.

1. 사용자의 Request를 Controller가 받는다.
2. Controller는 Business Logic을 처리를 Service와 같이 처리한 후 결과를 Model에 담는다.
3. Model에 저장된 결과를 바탕으로 시각처리를 담당하는 View를 제어하여 사용자에게 전달한다.

Spring framework에서 프로젝트를 진행해본다면 쉽게 접하는 디자인 패턴이다.

MTV


django는 MVC(Model-View-Controller)를 기반으로 한 프레임워크다. 하지만 장고에서는 같은 개념을 MTV(Model - Template - View)라고 부른다.

참고로 MVC패턴은 데이터(model), 사용자 인터페이스(view), 데이터 처리 로직(controller)을 구분해 한 요소가 다른 요소들에게 영향을 주지 않도록 설계하는 방식인데, 장고도 기본적으로 이 방식을 따르며 명칭이 조금 다를 뿐이다.

데이터저장 형태를 어떻게할지 설정하겠다. → Model
유저에게 보여지는 화면을 고치고 싶다. → Template
데이터를 처리해서 가공하고 싶다. → View
가공한 데이터를 유저가 보는 화면으로 넘겨주고 싶다. → URLconf

MVVM

MVVM 패턴은 마틴 파울러의 Presentation 모델 패턴에서 파생된 디자인 패턴이다다. MVVM 패턴의 목표는 비즈니스 로직프레젠테이션 로직UI로부터 분리하는 것이다. 비즈니스 로직과 프레젠테이션 로직을 UI로부터 분리하게 되면, 테스트, 유지 보수, 재사용이 쉬워진다.


참조

profile
세상을 선명하게

0개의 댓글