본문 바로가기

책터디/도메인주도설계철저입문

04. 부자연스러움을 해결하는 도메인 서비스 서비스란? 소프트웨어 개발에서 말하는 서비스는 클라이언트를 위해 무언가를 해주는 객체를 말한다. 도메인 주도 설계에서 말하는 서비스 도메인을 위한 서비스 애플리케이션을 위한 서비스 도메인 서비스란? 시스템에는 값 객체나 엔티티로 구현하기 어색한 행동도 있다. 도메인 서비스는 이런 어색함을 해결해주는 객체다. 도메인 서비스는 자신의 행동을 바꿀 수 있는 인스턴스만의 값을 갖지 않는다는 점에서 값 객체나 엔티티와 다르다 도메인 서비스의 사용 생각 없이 모든 처리 코드를 도메인 서비스로 옮기면 다른 도메인 객체는 그저 데이터를 저장할 뿐, 별다른 정보를 제공할 수 없는 객체가 되는 결과는 낳는다. 물론 도메인 서비스로 옮기지 않으면 어색한 행위도 있다. 어떤 행위를 값 객체나 엔티티에 구현할지 아니면 도메인 ..
03.생애주기를 갖는 객체 - 엔티티 엔티티란 ? 엔티티 : 도메인 모델을 구현한 도메인 객체를 의미한다. 값 객체 : 도메인 모델을 구현한 도메인 객체 엔티티와 값 객체의 차이는 동일성을 통해 식별이 가능한지 아닌지에 있다. 속성으로 구별되지 않는 객체 예 : 사용자 사용자는 속성이 아닌 동일성(identity)으로 식별된다. 엔티티의 성질 엔티티는 속성이 아닌 동일성으로 식별되는 객체다. 가변이다. 속성이 같아도 구분할 수 있다. 통일성을 통해 구별된다. 가변이다. 엔티티는 가변성을 갖는 객체다. 값 객체는 불변성을 갖기 때문에 교환(대입)해 수정했지만, 엔티티는 수정을 위해 객체를 교환하지 않는다. 엔티티의 속성을 수정하려면 객체의 행동을 통해 수정하면 된다. 단, 모든 속성이 반드시 가변일 필요는 없다. 속성이 같아도 구분할 수 있다..
02. 시스템 특유의 값을 나타내기 위한 '값 객체' 값 객체란? 시스템 특유의 값을 표현하기 위해 정의하는 객체 객체이기도 하고 동시에 값이기도 하다. 시스템 특유의 값을 나타내는 객체다. 값의 성질과 값 객체 구현 값의 성질 변하지 않는다. 주고받을 수 있다. 등가성을 비교할 수 있다. 값 객체는 시스템 특유의 값에 대한 표현이며, 값의 한 종류다. 값의 성질은 값 객체에도 그대로 적용된다. 불변하는 값의 장점 상태가 변화하지 않게 하는 프로그램을 단순하게 만들 가능성이 있는 제약이다. 물론 상태가 변하지 않는 객체의 단점도 있다. 그중 대표적인 것은 객체의 일부 값만 바꾸고 싶을 때도 객체를 아예 새로 생성해야 한다는 점이다. 이 점은 상태가 변할 수 있는 객체에 비해 성능 면에서 불리하기 때문에 아주 심각한 상황이 아니고서는 값 객체라도 상태를 바꿀..
01. 도메인 주도 설계란? 도메인 주도 설계란 무엇인가? 개발자가 소프트웨어를 개발하면서 가치 있는 지식과 그렇지 않은 지식을 잘 구분하려면 어떤 능력이 필요한가? > 먼저 소프트웨어 이용자의 세계를 이해해야 한다. 소프트웨어 이용자에게 무엇이 중요한 지식인지는 바로 이 이용자의 세계에 따라 달라진다. > 유용한 소프트웨어를 만들려면 이용자의 문제가 무엇인지 파악하고, 이를 해결할 수 있는 최선의 수단을 생각해야 한다. 도메인 주도 설계는 이러한 고찰을 반복하는 설계를 통해 이용자의 세계와 소프트웨어 구현을 연결 짓는 것이 목적이다. 도메인 지식에 초점을 맞춘 설계 기법 도메인 주도 설계 : 도메인 지식에 초점을 맞춘 설계 기법이다. 도메인 == '영역' 도메인에 속하는 개념과 사건을 이해하고, 그중에서 문제 해결에 유용한 것을 ..
들어가며. 도메인 주도 설계는 개발자에게 있어 엔지니어링에 대한 관점을 완전히 바꾸에 되는 큰 깨달음이다. 도메인 주도 설계의 개념 : 비즈니스상의 문제를 해결하기 위해 비즈니스를 이해하고, 비즈니스를 표현하는 것이다.