DDD : Domain Driven Development. 개발자가 SW를 개발하면서 실제 가치 있는 지식과 그렇지 않은 지식을 잘 구분해야
한다. 이를 위해선 고객이 누구인가를 잘 파악하는 것이 중요하다. DDD는 이처럼 domain 자체에 초점을 맞춘
설계 기법이다. (domain = 프로그램이 사용되는 대상 분야)
VO : Value Object. 값을 저장, 관리하는 객체.
불변성 - 상태 변화(협업 상황에서 객체 생성 후 메서드에 인자로 넘기며 통제할 수 없는 수정 사항 발생) 를 처음부터
허용하지 않는다.
갈아끼우기 - setter를 남발하는 대신 불변성을 유지하면서 갈아끼우기. 객체 생성 후 값을 변경한다.
등가성 비교 - VO 자체에서 직접 비교 수단을 제공하는 방식이 무난. 객체 간 비교 .equals() , 객체 내부의 값 비교
compareTo (속성을 추가해도 별도의 수정이 필요없음)
Entity : VO와 마찬가지로 Domain Model을 구현하는데 필요한 Domain Object이다. vo 와 entity의 차이는 동일성을
통해 식별이 가능한지 아닌지에 있다. 서비스를 이용하는 유저가 회원가입시 등록한 개인 정보를 변경하여도
수정했다 해서 다른 사용자가 되지는 않는다. 이처럼 동일성이라는 identity를 가지는 객체를 entity로 정한다.
(DB 상에서 관리되어야 하는 객체인가를 생각해보기)
vo 와 달리 가변 / 내부 값들이 모두 같아도 구분 가능 / identity를 통해 구별 이란 성질이 있다.
https://cafe.naver.com/eddicorp/1050
[ 링크쌤 컬럼 ] Value Object Attributes
안녕하세요. 에디로봇아카데미의 링크쌤입니다. 숫자, 문자, 문자열 등 값에는 여러 종류가 있습니다. 이와 같은 값에도 성질이 있을 수 있다는 것을 염두해야 한다. 객체화 전...
cafe.naver.com
- 주사위 게임 만들기 (애자일 프로세스 적용)
총 2개의 주사위를 굴릴 수 있다.
첫 번째 주사위를 굴려서 짝수가 나왔다면 주사위를 한 번 더 굴릴 수 있다.
새롭게 한 번 더 굴리는 주사위에는 특수 기능들이 달려 있다.
- 숫자 4가 나오는 경우 즉시 게임 오버된다.
- 숫자 3이 나오는 경우엔 친구들 주사위에서 점수를 3점씩 뺏어올 수 있다.
- 숫자 5가 나오는 경우엔 자신의 점수를 2점씩 친구들에게 나눠줘야 한다.
- 숫자 1의 경우엔 모두 다 함께 -2점씩 감점된다.
이미 0점이거나 아직 주사위를 굴리지 않았다면 음수값을 가지지 않고 0점 유지
Domain (Dice)
> 주사위 객체는 주사위를 사용하는 모든 시스템에서 재활용 가능하도록 만든다.
> 1 ~ 6 이라는 랜덤값 가지기 (사용자 변경으로 start ~ end 지정 가능)
Utility (랜덤생성)
> 사용자가 어떤 start, end 값을 요청해도 일관되게 커스텀한 랜덤 값을 생성할 수 있도록 한다. (재사용성↑)
Entity (Player)
> dice 객체를 사용할 플레이어 객체 생성.
> 첫번째 주사위의 결과가 두번째 주사위 동작을 결정짓도록 해야한다.
Utility (entity에 대한 자동 id 값 증가)
> player에 대응되는 현재 값을 배치하고, 자동 증가 메서드가 동작할 때 해당 값 검색하여 증가시켜 전달하도록 함
> entity 초기값을 등록할 수 있는 메서드
> entity 의 현재 id 값을 추출할 수 있는 메서드
'국비' 카테고리의 다른 글
03.06 국비학원 105일차 (게시물 조회, 수정, 삭제) (0) | 2023.03.07 |
---|---|
03.03 국비학원 104일차 (vue↔spring↔jpa 게시판 등록) (0) | 2023.03.04 |
02.28 국비학원 102일차 (평가11) (0) | 2023.03.01 |
02.27 국비학원 101일차 (Github PR) (0) | 2023.02.28 |
02.24 국비학원 100일차 (axios 데이터 전송(vue↔spring)) (0) | 2023.02.25 |