디자인패턴
- 소프트웨어 개발 방법을 공식화한 것
- 구현자들 간의 커뮤니케이션의 효율성을 높이는 기법
- MVC도 디자인 패턴 중 하나이다.
MVC
Model - View - Controller 의 약자
하나의 해플리케이션을 세가지의 역할로 구분한 개발 방법론
View <=> Controller <=> Model
Model
- 데이터 담당 / 데이터 처리
- View와 Controller에 대해서 어떤 정보도 알면 안된다.
- 데이터를 다루는 로직을 모아서 분리해둔 곳.
- ORM이나 ODM을 사용시 Model에 해당한다.
View
- 사용자에게 보여주는 화면
- UI와 관련된 코드가 들어간다.
Controller
- Model과 View의 중간다리 역할
- API Server에서는 Client에게 데이터를 받아(Request) 처리하고
다시 Client에게 Json같은 데이터 형태로 데이터를 보내는(Response) 역할이다.
- 요청에 맞는 데이터를 Model에 의뢰
데이터를 View에 반영해서 사용자에게 알려주는 역할
MVC 패턴 장점
- 하나의 역할만 담당 및 처리하므로 효율적이게 됨
- 유지보수성, 확장성, 유연성이 증가한다.
Service Layer
Model <=> Controller <=> Service <=> Model
Controller
- View와 Service의 중간다리 역할
- 처리해야할 데이터를 브라우저에게서 받음 (Request)
- 담당한 Service를 호출해서 데이터를 넘겨줌
- 처리된 데이터를 받아 뷰로 연결 (Response)
Service
- 데이터를 받아 비즈니스 로직을 처리
- Service에는 Reqeust와 Response를 받아선 안됨
- DB의 활용이 필요한 경우, 해당 처리를 하는 DAO를 호출
- Service는 어떤 Controller가 호출하든 상관이 없다.
- 필요한 매개변수만 주면 자신의 비즈니스 로직을 처리
- 모듈화를 통해 어디서든 재사용이 가능한 파일
DAO
Data Access Object
DB의 Data에 접근을 위한 객체