이제 메시지,즉 메서드의 껍질을 만들거임
여기서 할일은
- 유저스토리에서 기능 하나를 떼어내서,그 기능에 맞는 이름붙이고,그 행동에 맞는 도메인에 등록
- 해당 행동을 객체가 수행할때 필요한 절차와 구현을 생각해보며
그 객체가 그 행동을 온전히 다 못할거같으면,행동을 추가로 생성해서 그 기능에 맞는 이름붙이고 해당 행동에 맞는 객체에 등록->이걸 객체들이 해당 행동을 다 먹을때까지 재귀->모든 유저스토리 기능에 대해 반복
임
내가 뽑은 유저스토리는
사용자는 주식을 등록해둘수있다
사용자는 등록된 주식을 삭제할수있다
등록된 주식은 변동성이 발생하면 알림을 발생시킨다
사용자는 특정 주식의 레포트를 요청할수있다
사용자는 상위거래량 N개의 레포트배열을 요청할수있다
이렇게 볼수있음
위에서부터 하나씩 처리하자
클라이언트가 해당 동사로 메시지(메서드명과 인자)를 만들고,그걸 가장 잘 어울리는(정보전문가)에게 메시지를,즉 책임을 떠넘기면됨
이때 해당 도메인이 해당 책임을 전부 수행할수없을경우,못하는부분을 다시 메시지로 뽑아내서 다시 책임을 떠넘기면됨
이때 어울리는 도메인이 아무리생각해도 없으면 빼먹은거니 추가로 만들던가 하면됨
저번에 했던 도메인그림은
이렇게임
이제 책임설계를 시작하면
사용자는 주식을 등록해둘수있다 는
- 클라이언트:사용자
- 메시지:등록(사용자,주식)
임
근데 아무리 생각해봐도 저걸 받아먹을만한 애가 안보임,그러니 새 도메인을 추가하겠음
이제 저 책임을 주면됨
이제 저걸 어떻게 구현할건지 대충 로직을 생각해보고,쟤가 처리할수없는 일이 있는지를 생각해봄
등록은 딱히 저기서 더 할건 없을거같음
삭제도 마찬가지로 진행하면됨
등록된 주식은 변동성이 발생하면 알림을 발생시킨다 는
- 클라이언트:등록목록
- 메시지:is변동성(주식)
을 누구한테 붙이냐인데,이건 비정형데이터처리기가 가지는게 맞는거같음
또한 스케줄러는 그냥 등록목록을 실행만 시키기만 하면 되니,비정형데이터처리기랑 서로 알필요는 없을거같음
즉 스케줄러는 등록목록을 실행해야하니 등록목록은 실행 메시지를 가져야할거같아졌음
그리고 생각해보면,사용자는 주식을(도메인이 아닌 실제 현실에서의 주식) 가져와야할텐데,주식을 누가 생성할수있어야함
근데 꼭 주식일 필요는 없을거같음,주식대신 채권이 들어갈수도 있고 하니까,
- 클라이언트:사용자
- 메시지:생성(티커나 코드)
이렇게 보면 주식도메인이 가져가는게 맞을거같은데,정확히 주식이라고 박아버리면 확장할때 문제가 생길거같음
여기서 추상화를 도입하기로하고 좀 더 추상적인 이름으로 바꾸자,또한 주식이라고 적었던거도 다 바꿔주자
(드로우툴에서 텍스트들을 묶어주는게 있으면 좋을거같은데 못찾았음)
또한 생성메시지의 대략적인 구현을 생각해보면,티커나 코드를 가지고 외부에 질의해서 값을 받아오는게 필요함,즉 금융상품 내부에서 다 처리할순없음(이름과 이것저것)
그리고 그냥 티커로만 고정한다음 하겠음,티커 or 코드 계속붙이려니까 귀찮음
그러니 메시지가 추가로 생성됨
- 클라이언트:금융상품
- 메시지:fetch(티커)
이건 외부데이터가 받아가면될거같음
외부데이터는 이 책임을 혼자서 다 처리할수있으니 여기서 끝낼수있을거같음
이렇게 나머지 기능에 대해서도 이런식으로 하면
이렇게됨
빼먹었던 사용자의 시작메시지도 추가했고
- 클라이언트:엔드유저
- 메시지:등록,삭제
- 대상:사용자
레포트생성관련 메시지를 추가했고
사용자와 레포트생성기,금융상품과 레포트생성기간의 의존성도 필요없어보여서 제거했음
그리고 등록목록을 실행하는거도 명확하지않은거같아 이름을 변경했음
캐싱(특정시간마다 레포트 미리 생성)이랑 알림울리는방법이랑 사용자가입은 일단 제외했고,외부에서 요청하는방법도 아직 확실치않음
'사이드프로젝트 > (240808)이거왜오름?' 카테고리의 다른 글
이거왜오름? api 호출 구현체 작성 (0) | 2024.08.17 |
---|---|
이거왜오름?도메인 구현 (0) | 2024.08.13 |
이거왜오름?도메인 작성 (0) | 2024.08.11 |
이거왜오름? 유저 스토리 작성 (0) | 2024.08.09 |
프로젝트 컨셉잡기 (0) | 2024.08.09 |