DDD에서 소개하는 계층형 아키텍쳐의 일반적인 모습이다. 실무에서 많이 사용하는 일반적인 계층으로 좀 더 나누어 보면,
이 정도가 될 것 같다. 위 개념을 이용해서 웹 서비스의 전형적인 문제 하나를 같이 구현해 보자.
class WelcomePartyService:
def apply(self, welcome_party_id: int, user_id: int) -> None;
pass
class WelcomePartyService:
def apply(self, welcome_party_id: int, user_id: int) -> None;
welcome_party = get_welcome_party(welcome_party_id) # added
get_welcome_party
를 레파지토리 계층이라고 생각하면 된다.class WelcomePartyRepository: # added
def get(id: int) -> WelcomeParty:
return read_from_db(WelcomeParty, id)
class WelcomePartyService:
def __init__(self: wp_repo: WelcomePartyRepository) -> None: # added
self.wp_repo = wp_repo
def apply(self, welcome_party_id: int, user_id: int) -> None;
welcome_party = self.wp_repo.get(welcome_party_id) # changed
WelcomeParty
모델에 지원 기능을 다음과 같이 구현해 보자.class WelcomeParty: # added
def apply(self, user_id: int) -> None:
self.applyers.append(user_id)