• 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 }

    备注

    到底用哪一个,先不做评判。

  • 相关阅读:
    使用指针的误区之指针未初始化
    实验室react项目名词解释
    生活感悟之大学
    git 快速入门
    口才锻炼
    narcissus
    crest value &minimum
    factorial
    Str_turn
    array_x
  • 原文地址:https://www.cnblogs.com/happyframework/p/2983927.html
Copyright © 2020-2023  润新知