场景

修改用户名时,要验证用户名的唯一性。

实现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:实体如何处理外部依赖相关推荐

  1. 将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系

    介绍 WireMock是用于基于HTTP的API的模拟服务器. 有些人可能会将其视为服务虚拟化工具或模拟服务器. 它使您能够存根所需的API或其他外部依赖项,以加快本地开发速度. 它支持测试真实API ...

  2. 如何处理好依赖关系[Reprint]

    Source: http://book.csdn.net/bookfiles/383/10038314337.shtml "依赖"是和"变化"紧密联系在一起的概 ...

  3. PCL1.9的PCLConfig.cmake文件找不到eigen等外部依赖

    PCL1.9的PCLConfig.cmake文件找不到eigen等外部依赖 由于需要用到PCL中on_nurbs模块做拟合,但是ros自带的pcl中没有该模块.所以源码安装了PCL 1.9,但是在使用 ...

  4. vs 外部依赖项、附加依赖项以及如何添加依赖项目

    我们在 VS 中创建 Win32 控制台应用程序,vs 会为解决方案创建默认地创建 4 个 filters(资源管理器中没有对应的目录和文件夹): 头文件:一般为 .h 文件 外部依赖项 源文件:一般 ...

  5. onos中引入外部依赖

    当前版本的onos使用的是bazel进行依赖管理的 那么对于外部依赖的管理也由bazel负责 在bazel的官方文档中也有对应的说明,详细可参考https://bazel.google.cn/exte ...

  6. 通过命令运行jar包(指定外部依赖jar包)

    前提条件: 1.本机已安装jdk 2.已配好jdk的环境变量 通过以下命令查询jdk是否配好 java -version 执行出现java版本信息即配好 lizhi@LiZhideMacBook-Ai ...

  7. 被问麻了,Spring 如何处理循环依赖?

    点击关注公众号,利用碎片时间学习 前言 Spring如何处理循环依赖?这是最近较为频繁被问到的一个面试题,在前面Bean实例化流程中,对属性注入一文多多少少对循环依赖有过介绍,这篇文章详细讲一下Spr ...

  8. 【软件项目管理】任务(活动)之间的排序依据主要有:强制性依赖关系、软逻辑关系、外部依赖关系

    任务(活动)之间的排序依据主要有:强制性依赖关系.软逻辑关系.外部依赖关系. 项目各项任务(活动)之间存在相互联系与相互依赖关系,根据这些关系安排各项活动的先后顺序.确定任务(活动)之间关联关系的依据 ...

  9. Spring 如何处理循环依赖?

    Spring 如何处理循环依赖? 文章目录 Spring 如何处理循环依赖? 项目环境 1.什么是循环依赖? 2.Spring 如何来处理循环依赖? 2.1 allowCircularReferenc ...

最新文章

  1. json - 使用 json-lib
  2. django 快速搭建blog
  3. mysql协议重传_TCP协议详解
  4. 在Action类中获得HttpServletResponse对象的四种方法
  5. 交换机命令行配置与VLAN
  6. 原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念
  7. Oracle join多表查询
  8. 大江大海 —— 淮河、澜沧江(湄公河)
  9. 同网段的VLAN隔离
  10. APP推广运营手册全集
  11. 【学习笔记】SAP资产模块
  12. 爬虫之-bilibili视频下载-接口分析
  13. Revit二次开发——标记/标注自动避让思路分享
  14. 58同城数据爬取+可视化分析
  15. C语言字母常量所对应的数字,关于c语言常量的正确表示方法介绍
  16. 腾讯云轻量应用服务器器使用技巧-腾讯云OrcaTerm的上传下载
  17. 分布式应用:从CAP理论到PACELC理论
  18. testbed笔记:基类或者成员对象的构造函数调用问题
  19. Oracle 11G 数据迁移 到 12C
  20. python中“end=”是什么意思?

热门文章

  1. 驱动下通过进程PID获得进程名 (动态获取ImageFileName在EPROCESS结构体中的相对偏移)...
  2. 第4课 - 深入浅出处理器(续)
  3. 利用反射操作bean的属性和方法
  4. Apache Httpd + Subversion 搭建HTTP访问的SVN服务器
  5. c++设置不适用预编译头
  6. MFC中的Document-View结构
  7. 微信小程序字符串与对象相互转换
  8. IOS15.0的适配
  9. et操作 python wps_拿起来就用的office二次开发(python,win32com使用经历总结)
  10. java类加载过程_面试官:java类的加载过程