DDD:实体如何处理外部依赖
生活随笔
收集整理的這篇文章主要介紹了
DDD:实体如何处理外部依赖
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
場(chǎng)景
修改用戶名時(shí),要驗(yàn)證用戶名的唯一性。
實(shí)現(xiàn)1
1 public class User 2 { 3 public void ChangeUsername(string newUsername) 4 { 5 //使用服務(wù)定位器獲取IUsernameUniqueService ,執(zhí)行驗(yàn)證。 6 } 7 }實(shí)現(xiàn)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 }實(shí)現(xiàn)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 }實(shí)現(xiàn)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 }實(shí)現(xiàn)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 }備注
到底用哪一個(gè),先不做評(píng)判。
總結(jié)
以上是生活随笔為你收集整理的DDD:实体如何处理外部依赖的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql如何增加列
- 下一篇: POJ-1386 Play on Wor