Back-end

[IT] 소프트웨어 디자인 패턴 - MVC 패턴

somuxsomu 2024. 2. 15. 10:08

 

소프트웨어 디자인패턴 중 MVC 패턴에 대하여 알아봅시다 !

 

 

MVC 패턴은 흔하게 쓰이는 디자인 패턴 입니다.

주로 Spirng Web Prjoect에서 흔하게 쓰이며,

 

- 구글의 AngularJS

- php의 코드이그나이터

- python-django

 

에서도 쓰입니다.

 


 

MVC 패턴

Model-View-Controller (모델-뷰-컨트롤러) 

 

'소프트웨어 디자인 패턴'

 


 

MVC는 

Model(모델) - View(뷰) - Controller(컨트롤러) 의 약자입니다.

 

사용자가 직접 사용하고 보는 페이지와 (View)

데이터 처리를 하는곳과 (Model)

이 두가지를 중간에서 제어하는 컨트롤러 (Controller)

 

개발을 할 때 3가지 형태역할을 나누어 개발하는 방법론입니다.

 

하나의 애플리케이션, 프로젝트를 구성할 때

그 구성요소를 세가지의 역할로 구분한 패턴입니다.

 

 

 

예를들면,

사용자가 Controller를 조작하면,

Controller는 Model을 통해서 데이터를 가져오고,

그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서

사용자에게 전달하여 화면에 보여줍니다.

 

세가지 구성(M,V,C)을  하나의 애플리케이션으로 만들어서

각각 맡은 역할에 집중 할 수 있게 개발을 한다면

 

1. 유지보수

2. 애플리케이션 확장성

3. 유연성 증가

 

의 세가지 장점과 중복 코딩과 같은 문제점을 해결 할 수 있습니다.

 

즉,

사용자 인터페이스로부터 비즈니스 로직을 분리하여

애플리케이션의 시각적 요소나

그 이면에서 실행되는 비즈니스 로직을 

서로 영향 없이 쉽게 고칠 수 있는

애플리케이션을 만들기 위해 사용하는

디자인 패턴을 MVC 패턴이라고  합니다.

 

 


 

MVC 패턴을 사용하면 좋은 점에 대해서 알아봅시다 !

 

📌 MVC 패턴을 사용해야 하는 이유

1. 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행 가능하다.

2. Model과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성, 유연성에 유리하다.

3. 중복 코딩의 문제점을 제거할 수 있다.

 


 

 

이제 좀 더 자세하게,

Model(모델) - View(뷰) - Controller(컨트롤러) 각각 자세히 알아봅시다 ! 

 

 

1. Model 

모델은 애플리케이션의 정보, 데이터를 나타냅니다.

 

데이터는 내부의 상태에 대한 정보를 가질 수도 있고,

모델을 표현하는 이름 속성으로 가질 수 있습니다.

 

애플리케이션이 무엇을 할 건지 정의하는 부분이다.

 

즉,

컨트롤러가 요청을 하면 그 요청에 맞는 역할을 수행합니다. 

비즈니스 로직을 구현하는 영역으로 응용프로그램에서 데이터를 처리하는 부분입니다.

 

 

"애플리케이션의 정보,데이터를 나타낸다."

 

 

비즈니스 로직이란? 

업무에 필요한 데이터처리를 수행하는 응용프로그램의 일부라고 할 수 있습니다.

데이터베이스에 연결하고 데이터를 추출하거나 저장,삭제,수정 등의 작업을 수행합니다.

상태의 변화가 있을때 컨트롤러와 뷰에 통보해 후속 조치 명령을 받을 수 있게 합니다.

 

2. Controller 

 

컨트롤러는 클라이언트에게 요청(URL)을 받았을 때,

그 요청에 대해 실제 업무를 수행하는 모델(Model) 컴포넌트를 호출합니다.

또한, 클라이언트가 보낸 데이터가 있다면 모델에게 전달하기 쉽게 데이터를 가공해줍니다.

모델이 모든 업무를 마치면 해당 결과를 뷰에게 전달합니다.

 

 

"데이터와 비즈니스로직 사이의 상호동작을 관리"

 

3. View

 

뷰는 컨트롤러로 부터 받은 모델의 결과값을 가지고,

사용자에게 출력할 화면을 만드는 일을 합니다.

 

즉,

만들어진 화면을 웹 브라우저저에게 전송하여 웹브라우저가 출력하게 됩니다.

 

화면에 표시되는 부분으로

추출한 데이터나 일반적인 텍스트 데이터를 표시하거나

입력폼 또는 사용자와의 상호작용을 위한 인터페이스를 표시하는 영역입니다.

 

 

"데이터 기반으로 사용자들이 볼수 있는 화면"