오늘의 취준/오늘의 공부

MVC 패턴

gogoem 2023. 9. 16. 23:38
728x90

2023.09.16

MVC패턴(Model-View-Controller)

소프트웨어 디자인 패턴 중 하나로 애플리케이션의 구조를 구성하고 코드를 조직화하는 데에 사용되는 패턴입니다.

사용자 인터페이스(UI)와 비즈니스 로직을 분리하여 애플리케이션의 유지보수성을 향상시키고 확장성을 높여줍니다.

 

구성요소

Model DB. 데이터와 비즈니스 로직을 나타냄.
데이터의 상태를 저장하고 조작하는 역할.
데이터의 변경, 유효성 검사, 연산 등을 처리함.
View UI. 데이터를 시각적으로 표현하고 사용자와 상호 작용하는 요소.
모델의 상태를 표시하고 사용자 입력을 수신해 Controller에 전달.
Controller 모델과 뷰의 중간 역할.
View를 통해 들어온 사용자의 요청을 받아 모델에서 데이터를 가져오고 다시 View에 전달함.
또한 데이터 유효성 검사 수행 등 비즈니스 로직을 처리함.

 

장점

  • MVC의 각 구성 요소는 독립적으로 개발 및 테스트가 가능해 코드의 재사용성이 높아짐.
  • 각 구성 요소가 분리되어 있어 추적과 수정이 편리해 유지보수가 쉬움.
  • 새로운 기능을 추가하거나 새로운 뷰를 만들 때 다른 구성 요소에 영향을 미치지 않아 확장이 쉬움.
  • 구성 요소 각각을 단위 테스트 할 수 있어 테스트가 용이함.

 

 

 

 

MVC 패턴을 사용할 때,

관행적으로 Controller 요소를 Service, Repository로 역할 분리해 사용한다.

이유는?

 

"클린 코드 구현을 위해."

만약 하나의 클래스가 많은 기능과 역할을 가진다면 동시에 여러명이 해당 클래스를 수정할 수 없어 생산성이 저하된다.

또한 메서드가 길어지면 읽고 이해하는 것이 어려워지며 메서드의 역할이 많아지면 한 부분을 수정할 때 다른 부분에 영향을 미칠 수 있어 수정이 까다로워짐. 그러나 역할이 분리되어 코드가 간결해지면 코드 리딩에 걸리는 시간을 줄여주고 더 나아가 개발 효율과 속도가 증가 된다.

>> Controller를 분리하면 유지보수성이 커지고 협업이 용이해짐.

 

 

분리 단계와 역할

Controller UI(User Interface)와 애플리케이션 로직 간 상호작용을 담당하는 역할.
주로 HTTP요청을 처리하는 데에 사용되며 URL 라우팅, 요청 파라미터 검증 및 데이터 변환 등을 담당.
Service 다양한 데이터 조작 및 처리, 예외 처리를 해 주는 역할.
Repository SQL을 이용해 실제 DB와 통신하는 역할.

 

의존방향