본문 바로가기
CS

[CS] MVC 패턴

by 시간많은백수 2023. 8. 18.
반응형

 

MVC 패턴 시각자료

✔️MVC 패턴이란?

MVC 패턴은 소프트웨어 개발에서 사용자 인터페이스를 분리하고 관리하기 위한 디자인 패턴입니다. 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller) 세 가지 요소로 나누어 설계하며, 각 요소는 독립적으로 역할을 수행하면서도 연결되어 작동합니다.

위의 그림처럼 Client는 Controller에 API를 요청➡️Controller는 Model에게 데이터 요청➡️다시 데이터를 Controller에 전달➡️Controller는 받은 데이터를 View에 전달➡️View는 데이터를 시각화하여 Client에 전달하여 표시

 

MVC 패턴을 사용하면 복잡한 애플리케이션의 구조를 단순화하고 관리하기가 용이 해 지며,코드의 가독성,유지보수성,재사용성을 높일 수 있습니다.

 

💡 Model 1(JSP)

Model 1 아키텍처는 간단한 웹 애플리케이션 개발을 위한 패턴으로, JSP (JavaServer Pages)가 주로 사용됩니다. 이 패턴에서는 JSP 파일 내에서 비즈니스 로직과 프레젠테이션 로직이 모두 처리됩니다. JSP 페이지는 HTML 코드와 Java 코드를 혼합하여 작성하며, Java 코드를 사용하여 데이터를 처리하고 웹 페이지를 동적으로 생성합니다. Model 1 아키텍처는 간단한 애플리케이션에 적합하지만, 비즈니스 로직과 프레젠테이션 로직의 분리가 부족하고 유지보수가 어려울 수 있습니다.

Model 1 시각자료

 

💡 Model 2(MVC)

Model 2 아키텍처는 복잡한 웹 애플리케이션 개발을 위한 패턴으로, MVC (Model-View-Controller) 패턴을 기반으로 합니다. 이 패턴에서는 비즈니스 로직 (모델), 프레젠테이션 로직 (뷰), 그리고 사용자 입력을 처리하는 로직 (컨트롤러)를 분리하여 관리합니다. 모델은 데이터와 비즈니스 로직을 처리하고, 뷰는 화면을 생성하고 표시하며, 컨트롤러는 사용자 입력을 처리하고 모델과 뷰 간의 흐름을 관리합니다. 이렇게 분리된 구조는 유지보수성과 확장성을 향상시키며, 각 역할을 독립적으로 변경할 수 있게 해줍니다.

Model2 시각자료

 

MVC 패턴은 Model 2 아키텍처의 일종으로, 웹 애플리케이션 개발에서 널리 사용되며 유지보수가 쉽고 확장 가능한 구조를 제공합니다. Model 2 아키텍처는 대규모 웹 애플리케이션에서 특히 유용하며, Java 웹 개발에서 주요한 아키텍처 패턴 중 하나로 자리 잡고 있습니다.

 

 

💡 각 요소의 역할

📌모델 (Model)

  • 애플리케이션의 데이터와 비즈니스 로직을 관리합니다.
  • 데이터를 저장, 검색, 조작하는 작업을 담당합니다.
  • 데이터 변경 시 뷰 및 컨트롤러에 변경 사항을 알립니다.

📌뷰 (View)

  • 사용자 인터페이스의 시각적인 표현을 담당합니다.
  • 모델의 데이터를 표시하고 사용자 입력을 받아 컨트롤러로 전달합니다.
  • 데이터 변경 시 모델로부터 새로운 데이터를 받아 화면을 업데이트합니다.

📌컨트롤러 (Controller)

  • 사용자의 입력을 처리하고 그에 따른 모델 및 뷰의 업데이트를 관리합니다.
  • 사용자 입력을 해석하여 모델에 반영하고, 모델의 변경 사항을 뷰에 전달합니다.

 

💡 MVC 패턴의 장점

  • 유연한 구조: 각 요소가 분리되어 작동하므로 코드 변경이 한 요소에 영향을 미치지 않고 다른 요소에도 영향을 미치지 않습니다.
  • 유지보수 용이성: 코드의 분리로 인해 유지보수가 용이하며, 수정 및 개선이 편리합니다.
  • 재사용성: 각 요소는 독립적으로 동작하므로 다른 프로젝트에서도 재사용이 가능합니다.
  • 동시 개발: 모델, 뷰 및 컨트롤러의 독립성으로 인해 여러 개발자가 동시에 다양한 부분을 개발할 수 있습니다.

💡 MVC 패턴의 한계

  • 복잡성 증가: 프로젝트가 커지면서 모델, 뷰, 컨트롤러 간의 관계와 흐름이 복잡해질 수 있습니다. 이로 인해 코드가 어려워지고 유지보수가 어려워질 수 있습니다.
  • 너무 많은 컨트롤러: 대규모 애플리케이션에서는 많은 수의 컨트롤러가 필요할 수 있습니다. 이로 인해 컨트롤러 계층이 비대해지고 관리하기 어려워질 수 있습니다.
  • 유연성 부족: 모델과 뷰, 컨트롤러 간의 분리가 완벽하지 않으면 유연성이 제한될 수 있습니다. 예를 들어, 뷰와 모델 간의 직접적인 의존성이 발생할 수 있습니다.
  • 오버헤드: 작은 규모의 애플리케이션에서는 MVC 패턴을 도입하는 것이 오버헤드가 될 수 있습니다. 복잡한 패턴을 도입하지 않아도 충분히 유지보수 가능한 애플리케이션을 구축할 수 있습니다.

 

 

💡 이미지 참조

https://johnmarc.tistory.com/6

반응형

'CS' 카테고리의 다른 글

[CS] 도커와 쿠버네티스 (컨테이너)  (0) 2023.09.04
[CS] 깃(Git)과 깃허브(Github)  (0) 2023.08.29
[CS] Rest 와 Restful API  (0) 2023.08.26
[CS] OSI 7계층과 TCP/IP 4계층  (0) 2023.08.24
[CS] 절차지향 vs 객체지향  (0) 2023.08.20