我一直致力于将领域驱动设计模式应用到我们的 Web 应用程序中。我们遇到的问题之一是避免使用实体内的存储库。
例如,我们有一些实体,其方法将触发电子邮件。因此,我们必须有权访问电子邮件模板(存储在数据库中),并在数据库队列表中创建新的电子邮件记录。目前,我们通过访问这些实例中的存储库来违反该模式。
在这些情况下我们应该使用“服务”层还是“应用程序”层(我们有很多)?有没有更好的方法来解决这个问题?
是的,我建议创建一项服务来执行电子邮件的发送。您可以在与域模型相同的项目中创建与服务交互的接口,但在单独的项目中提供服务的实现,以便模型与服务之间不存在硬依赖关系。依赖关系是相反的——从服务到模型。这还为实现单元测试创建了更好的设置,以确保您的服务在应该的情况下被调用,因为您现在可以在单元测试中模拟服务。
剩下要做的一件事是确保在创建这些对象类型之一时注入您的服务。因此,您将把对象创建推迟到存储库。或者更好的是,使用依赖项注入框架来为您解决依赖项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)