다양한 설명들이 있지만 나에게 와닿은 정리는 "소프트웨어를 개발하는 대상 영역"이다.
도메인을 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화 시킨 것
도메인의 핵심을 간략하게 단순화해서 표현할 수 있는 모든 것이 도메인 모델이다.
Domain 부분에서 비즈니스 로직을 가지고 객체 지향의 특성을 적극 활용 하는 것을 도메인 모델 패턴이라 한다.
장점
- 객체 지향에 기반한 재사용성,확장성, 그리고 유지 보수의 편리함
- 필요에 따라 약간의 수정이 필요하겠지만 언제든지 재사용할 수 있다.
단점
- 하나의 도메인 모델을 구축하는데 많은 노력이 필요하다,
- 객체를 판별하고 객체들 간의 관계를 정립해야 하고, 데이터베이스 사이의 매핑에 대해서 고민해야한다.
- 도메인 모델에 능숙한 개발자가 없을 경우 구축 자체가 힘들어질 수도 있다.
엔티티에는 비즈니스 로직이 거의 없고 서비스 계층에서 대부분의 비즈니스 로직을 처리하는 것을 트랜잭션 스크립트 패턴
장점
- 구현 방법의 단순함 때문에 구현이 매우 쉽다
- 얼마나 모듈화를 잘 하느냐에 따라서 높은 효율을 낼 수 있다.
단점
- 비즈니스 로직이 복잡해질수록 난잡한 코드를 만들게 된다.
- 도메인에 대한 분석/설계 개념이 약하기 때문에 코드의 중복 발생을 막기 어려워진다.