文章未來將更新於:
https://kevinyay945.com/golang-project-design/anki-support/design-domain-layer/
在先前的規劃中,可以發現,我們主體都是圍繞在Anki的上打轉
因此,這次的domain中,會有三個domain,分別是
另外,關於回傳的卡片,我也可以想像他有以下功能
目前規劃可以想像到的應該就屬這些部分了
在Domain層的規劃,主要的邏輯會是一個domain做一件事,另外,如果他有回傳的物件,那這個物件上面掛的method不能有依賴別人的內容,如果有需要依賴的話就要與原domain層的interface進行互動
例如:
ankier := &Anki{}
note := &AnkierNote{}
err := note.Save() // 👎
err := ankier.Save(note) // 👍
會這麼設計,主要是因為在domain原本的struct中,會注入各式各樣的infrastructure,但透過這些domain層所產出的struct內基本上都是純粹的資料格式,所以不會希望也把一些對外互動的infrastructure也放到這個struct中,這樣會讓整體規劃上變的更加的複雜