Sha*_*e N 6 design-patterns domain-driven-design
我一直在努力将域驱动的设计模式应用到我们的Web应用程序中.我们遇到的一个问题是避免必须在实体内使用存储库.
例如,我们有一些实体,其方法将触发电子邮件.因此,我们必须能够访问电子邮件模板(存储在数据库中),以及在数据库队列表中创建新的电子邮件记录.我们目前通过访问这些实例中的存储库来违反该模式.
我们应该在这些实例中使用"服务"或"应用程序"层(我们有很多)吗?有没有更好的方法来解决这个问题?
是的,我建议创建一个服务来执行电子邮件的发送.您可以在与域模型相同的项目中创建与服务交互的接口,但在单独的项目中提供服务的实现,以便模型与服务之间没有硬依赖关系.依赖性是相反的 - 从服务到模型.这也为实现单元测试创建了一个更好的设置,以确保在应该的情况下调用您的服务,因为您现在可以在单元测试中模拟服务.
剩下要做的一件事是确保在创建这些对象类型之一的任何时候注入您的服务.因此,您将对象创建推迟到存储库.或者甚至更好,使用依赖注入框架来解决您的依赖关系.