유명한 친구 MVC 패턴

November 7, 2023 (1y ago)

Model View Controller

MVC (모델-뷰-컨트롤러)는 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다. 모든 디자인 패턴에는 중점으로 두고 있는 부분들이 있다.

예를 들어 Facade 디자인 패턴은 너무 복잡한 구조의 하위 시스템을 갖고 있는 클래스들을 단순화하는데 집중하였고 Composite 디자인 패턴은 여러 클래스간에 공통점을 찾고 그 공통점들을 트리의 형태로 구성하여 관계를 형성하는데 집중했다. 그렇다면 MVC는 무엇에 집중했을까?

MVC가 집중한 것!

소프트웨어를 작동 시키는 비즈니스 로직과 사용자가 접근하는 화면을 구분하는데 중점을 두었다.

MVC는 각각의 역할에 중심하여 기능들을 구현하자는 것을 강조한 디자인 패턴이다.

Model

애플리케이션 내에서 다루는 데이터의 구조를 다루는데 집중하기 위한 모델들을 구분하자는 것이다. 이러한 데이터의 변화는 주로 컨트롤러의 업데이트로 인한 뷰를 제어하기 위한 로직이나 애플리케이션 내에서 추적되어야 하는 상태들에 대해서 다룬다.

View

애플리케이션내에서 데이터가 표시되는 방식에 대해서 정의한다. 예를 들어 웹에서 사용자가 쇼핑 사이트에서 쇼핑을 하는데 있어 쇼핑 목록에 어떠한 상품들을 담았는지에 대한 정보들이 표시되거나 사용자가 주소지를 업데이트를 했을 경우 업데이트된 정보를 뷰를 통해서 보여주는 역할을 해야 한다.

Controller

컨트롤러는 앱의 사용자의 입력에 응답하여 모델 및 또는 뷰를 업데이트하는 로직들이 포함되어야 한다. 예를 들어 쇼핑 목록에 추가되어 있는 상품들을 제거할 수 있는 삭제와 관련된 양식과 버튼들이 포함될 수 있다.

이와 같은 경우 작업을 수행하기 위해서는 모델을 업데이트 하기 위해 컨트롤러로 데이터를 전송하여 모델을 적절하게 조정한 후 다시 모델로 데이터를 보내고 업데이트된 모델을 바탕으로 뷰가 변경되는 방식으로 진행이 될 것이다.

마치며

디자인 패턴들은 애플리케이션을 만드는데 있어 각각의 역할에 집중하여 애플리케이션을 구성할 수 있게끔 도와주는 역할을 한다. MVC는 그 중에서도 View에 대한 로직을 제외한 다른 도메인 로직에 대해서 다루는 것을 집중한 디자인 패턴이다. 디스플레이에 표기되는 데이터들은 애플리케이션 내의 모델들의 로직에 의해서 결정되기 때문에 더 중요하게 다루어야 하는 로직으로 구분되기 때문에 뷰 보다는 다른 로직들에 대해서 집중적으로 다루자는 것이다. MVC이외이도 많은 디자인 패턴이 있기 때문에 여기서 그치지 않고 계속해서 공부해 나가야 겠다.