일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Java의 이점
- static
- 감사기록
- 해우소
- 클래스
- KPT
- #내일배움캠프
- 스레드
- #스파르타내일배움캠프TIL
- Java
- #스파르타내일배움캠프
- 인스턴스
- 성장기록
- diary
- 스파르타내일배움캠프TIL
- 생성자
- 회고록
- 객체지향 언어
- 변수의 다양성
- TiL_1st_0419
- GitHub
- 스파르타내일배움캠프
- Token
- 메서드
- Github_token
- 포맷은 최후의 보루
- Git
- Diary 해우소
- 내일배움캠프
- JVM
- Today
- Total
몬그로이
MVC 디자인패턴 본문
mvc 패턴에 대해서 설명해주세요.
Model - View - Controller 로 구성된 소프트웨어 디자인 패턴
MVC 구조가 어떤 이점을 가져다 주는 것일까?
관심사의 분리
1. 관심사의 분리
2. 컴포넌트의 명확한 역할 분리로 인해 서로간의 결합도를 낮출 수 있다.
3. 코드의 재사용성 및 확장성을 높일 수 있다.
4. 서비스를 유지보수하고 테스트하는데 용이해진다.
5. 개발자 간의 커뮤니케이션 효율성을 높일 수 있다
1. 컴포넌트의 명확한 역할 분리로 인해 서로간의 결합도를 낮출 수 있다.
MVC 패턴으로 구현된 소프트웨어나 애플리케이션은 Model, View, Controller 3가지 컴포넌트로 명확하게 구분되기 때문에 Model은 데이터 및 비즈니스 로직을 담당하고, View는 사용자 인터페이스를 표현하며, Controller는 사용자 요청을 처리하기 위해 Model과 View의 흐름을 제어한다.
이러한 점을 통해 각각의 컴포넌트는 자신이 맡은 역할만 수행한 후 다른 컴포넌트로 결과만 넘겨주면 되기 때문에 서로간의 결합도를 낮출 수 있다.
2. 코드의 재사용성 및 확장성을 높일 수 있다.
개발한 Model과 Controller는 여러 View에서 재사용할 수 있고, View의 경우도 다른 Model과 함께 재사용할 수 있으므로 개발 시간을 단축하고 중복 코드를 줄이는데 많은 도움을 줄 수 있다.
이로 인해 기능이나 모듈별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 최소화하여 작성한 코드의 가독성 및 확장성, 그리고 재사용성을 증가시킬 수 있다.
3. 서비스를 유지보수하고 테스트하는데 용이해진다.
변경이 필요한 부분을 보다 쉽게 식별 및 파악할 수 있고, 수정이나 확장할 경우 해당 부분에만 집중하여 개발할 수 있어서 다른 부분에는 영향을 덜 주게 된다. 이를 통해 변경에 따른 유지보수 비용을 줄일 수 있다.
또한, Model, View, Controller를 개별적으로 테스트하기 쉽기 때문에 컴포넌트의 동작을 테스트하기 위한 단위테스트 및 통합 테스트 코드를 개발하는데 수월하다.
4. 개발자 간의 커뮤니케이션 효율성을 높일 수 있다.
Model, View, Controller의 역할이 분리되어 있기 때문에 개발자들 간의 협업 과정 속에서도 담당한 역할에 대한 작업을 수행하면 되기 때문에 코드 충돌을 미리 방지하기가 쉽다.
그리고 분리된 역할마다 개발자가 배정되어 개발 업무를 수행하기 때문에 제 3자인 개발자가 의견이나 피드백을 전달하기 좋은 구조를 제공하며, 보다 쉽게 새로운 요구사항을 도출할 수 있다.
MVC 패턴의 한계
- Model과 View의 의존성을 완전히 분리시킬 수 없다.
- 컨트롤러의 비중이 높아져 부담이 커진다면 Massive-View-Controller 현상을 피할 수 없다.
https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC
'Organizing Docs > Spring Docs' 카테고리의 다른 글
주의가 필요한 일대다 단방향 (0) | 2024.07.19 |
---|---|
동시성 제어 요약 (0) | 2024.07.16 |
Jpa repository 메서드 명명규칙 - 공식문서 참고 (0) | 2024.07.12 |
QueryDSL (0) | 2024.06.30 |
Entity-Table 에 사용하기 좋은 어노테이션 기능 (0) | 2024.06.30 |