zoukankan      html  css  js  c++  java
  • 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 }

    备注

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

  • 相关阅读:
    c++ accumulate
    Croc Champ 2013 Round 2 (Div. 2 Edition) B. Ksusha the Squirrel
    ural 1017. Staircases
    ural 1012Kbased Numbers. Version 2 1013. Kbased Numbers. Version 3
    ural 1008. Image Encoding
    ural 1009. Kbased Numbers
    echo命令去掉换行符
    linux中shell 参数变量
    C#中可变字符串StringBuilder和String
    C#异常处理语句
  • 原文地址:https://www.cnblogs.com/happyframework/p/2983927.html
Copyright © 2011-2022 走看看