위로
아래
디자인 패턴
디자인 패턴 : 객체 지향 프로그래밍 설계 시 의사소통 수단의 일종.
- 협업 개발 시 말로 설명하는 하는 것보다 패턴 기반으로 설명하는 것이 직관적이다
- 개발 시 발생하는 문제들은 이미 선임들이 해결했던 문제들이고, 그 해결책을 디자인 패턴으로 정리해놓았다. 자주 발생하는 문제들을 피하기 위해 사용되는 패턴.
- 결국 패턴보다는 간결한 코드베이스가 가장 중요하다. 패턴에 의존하지 말고, 효율적인 방법을 좇다가 패턴이 필요할 때 써야 한다.
- 23개의 패턴이 수록된 GoF가 가장 유명하다.
MVC 디자인 패턴
MVC 디자인 패턴 (Model View Controller)
- 모델, 뷰, 컨트롤러 세 가지 형태로 나누어 개발하는 방법론
- 비즈니스 처리 로직과 사용자 인터페이스 요소들을 분리시켜서 서로 영향 없이 개발하기 수월하다
- 유지보수가 편하다.
- 유저가 Controller를 조작하면, 컨트롤러가 model을 통해 데이터를 가져오고, 그 데이터를 view를 통해 유저에게 보여주는 방식
MVC 구성
Model
- 데이터 처리 역할.
- 데이터베이스와 연동하는 DAO (Data Access Object)와 데이터 구조를 표현하는 DO(Data Object) || Entity로 구성.
- 모델의 규칙
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다
- 뷰나 컨트롤러에 대한 어떠한 정보도 알지 못해야 한다
- 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다
View
- 화면에 출력하는 역할.
- Controller 하위에 종속되어, Model이나 Controller가 보여주려하는 것들을 최종 사용자에게 화면(UI)로 출력.
- HTML, CSS, JavaScript를 모아둔 컨테이너.
- 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어온다.
- 뷰의 규칙
- 모델이 가지고 있는 정보를 따로 저장해서는 안 된다
- 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 한다
- 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다
Controller
- 사용자에게 입력을 받고, Model과 View를 중개하는 역할
- 사용자의 요청사항을 파악하고, 그 요청에 맞는 데이터를 Model에 전달하고, 응답 받은 데이터를 View에 반영해서 사용자에게 알린다
- 컨트롤러의 규칙
- 모델이나 뷰에 대해서 알고 있어야 한다
- 모델이나 뷰의 변경을 모니터링해야 한다
모델
모델 1
- JSP에서 출력과 로직을 전부 처리하는 모델
- Controller 영역에 view 영역을 같이 구현하는 방식
- Javabean Service Class 이용
모델 2
- JSP에서 출력만 처리하고, 서블릿에서 로직을 처리하는 모델.
- Controller, Model, View를 모두 분리
- HTML 소스와 Java 소스를 분리해놓아, 확장이나 유지보수가 편하다.
MVC 모델의 한계
- 대규모 MVC 어플리케이션 (Massive View Controller) : 복잡한 화면을 구현하게 되면 명령을 내리는 Controller가 너무 비대해져, 새 기능을 추가하기도 어렵고 코드 분석이나 테스트도 어려워진다.
- 보완하기 위해 파생된 패턴들 : MVP, MVVP, Viper, Clean Architecture, Flux, Redux, RxMVVM 등