프로그래밍을 할 때 아키텍처를 설계하는 디자인 패턴 중 하나로서 Model, View, Controller를 사용하여 설계하는 방식이다.
데이터를 가진 객체로, 어플리케이션의 정보 및 데이터를 의미한다.
- View, Controller의 어떤 정보도 몰라야 한다.
- 재사용이 가능해야 하고, 다른 인터페이스에서도 변경되면 안 된다.
UI 등의 시각적 요소를 의미한다.
- 모델이 가진 정보를 따로 저장하면 안 된다.
- 다른 구성 요소(Model,Controller)에 대해 몰라야 한다.
- 변경 시 변경 통지에 대한 처리 방법을 구현해야 한다.
Model과 View를 연결한다.
- Model과 View에 대해 알아야 한다.
- Model과 View의 변경을 모니터링 해야 한다.
Data Transfer Object로서, 계층간 데이터 교환을 위해 사용하는 객체이다.
위와 같은 문제를 발생시키지 않기 위해 필요한 데이터만 선택적으로 담아 DTO를 만들어 클라이언트와 서버가 서로에게 데이터를 전달하는 것이다.