DDD:实体如何处理外部依赖
生活随笔
收集整理的這篇文章主要介紹了
DDD:实体如何处理外部依赖
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
修改用戶名時,要驗證用戶名的唯一性。
實現1
1 public class User 2 { 3 public void ChangeUsername(string newUsername) 4 { 5 //使用服務定位器獲取IUsernameUniqueService ,執行驗證。 6 } 7 }實現2
1 public class User 2 { 3 public void ChangeUsername(string newUsername) 4 { 5 EventBus.Send(new UsernameChangedEvent(newUsername)); 6 } 7 } 8 9 public class UsernameChangedEventHandler 10 { 11 public UsernameChangedEventHandler(IUsernameUniqueService usernameUniqueService){} 12 13 public void Process(UsernameChangedEvent){} 14 }實現3
1 public class ChangeUsernameCommandHandler 2 { 3 public ChangeUsernameCommandHandler(IUsernameUniqueService usernameUniqueService){} 4 5 public void Process(ChageUsernameCommand){} 6 } 7 8 public class User 9 { 10 public void ChangeUsername(IUsernameUniqueService usernameUniqueService, newUsername){} 11 }實現4
1 public class UsernameChangeService 2 { 3 public UsernameChangeService(IUsernameUniqueService usernameUniqueService){} 4 5 public void ChangeUsername(Guid userId, string newUsername){ } 6 } 7 8 public class User 9 { 10 Internal void ChangeUsername(string newUsername){ } 11 }實現5
1 public class UsingUser 2 { 3 public UsingUser(User user, IUsernameUniqueService usernameUniqueService){} 4 5 public void ChangeUsername(string newUsername){ } 6 } 7 8 public class User 9 { 10 Internal void ChangeUsername(string newUsername){ } 11 }備注
到底用哪一個,先不做評判。
總結
以上是生活随笔為你收集整理的DDD:实体如何处理外部依赖的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql如何增加列
- 下一篇: POJ-1386 Play on Wor