이용자에게 유용한 소프트웨어를 개발하려면 가치 있는 지식과 그렇지 않은 지식을 신중히 구분해서 가치 있는 지식만 코드에 놓여 넣어야 한다.그러기 위해서는 소프트웨어 이용자의 세계를 이해해야 한다. 문제가 무엇인지 파악하고, 해결을 위한 최선의 수단을 생각해야 한다.도
프로그래밍 언어에는 원시 데이터 타입이 있다. 이것만을 이용해 시스템을 개발할 수도 있지만 때로는 시스템 특유의 값을 정의해야 할 때가 있다. 이러한 시스템 특유의 값을 표현하기 위해 정의하는 객체를 값 객체라고 한다.값의 성질로는 다음 세가지를 꼽을 수 있다.변하
엔티티 또한 값 객체와 마찬가지로 도메인 모델을 구현한 도메인 객체이나 동일성을 통해 식별이 가능한지가 다르다.사용자의 경우, 개인정보를 사용자 정보로 등록한다. 하지만 개인정보가 변경되었다고 해서 해당 사용자가 다른 사용자가 되지는 않는다.반면, 성과 이름의 두 가
객체지향 설계의 개념 중 도메인 모델을 기반으로 만들어진 도메인 객체만으로 수행하기 어려운 책임이 있는 경우 '순수한 가공물'을 창조해내어 이 객체에 해당 책임을 부여할 수 있다.서비스는 이러한 '순수한 가공물'의 한 종류라고 볼 수 있으며 어플리케이션 서비스와 도메인
프로그램을 실행할 때 메모리에 로드된 데이터는 종료시 그대로 사라져버린다.객체를 다시 이용하려면 데이터스토어에 객체 데이터를 저장 및 복원할 수 있어야 한다.리포지토리는 데이터를 저장하고 복원하는 처리를 추상화하는 객체다.리포지토리의 책임은 도메인 객체를 저장하고 복원
애플리케이션 서비스는 사용자의 유스케이스를 구현하는 객체라고 할 수 있다.아래와 같은 User 와 UserService 가 있다.User 는 사용자 도메인 모델을 투영시킨 엔티티이며 UserService 는 User 도메인이 처리하기 부자연스러운 책임을 수행하는 도메인