我正在考虑将一个大型ZF2模块分成两个独立的模块,我不知道如何处理服务层。
当前模块具有服务层和域。域对象密切地模拟业务概念并包括与财务会计相关的子集。我考虑将这些会计对象转移到自己的模块中。
新的会计模块将定义诸如iAccountable,iLedgerSource,iStatementSource之类的接口,并且这些接口将由现有核心中的对象实现。域。
我的问题有两个方面:我应该关注核心问题吗?域依赖于另一个模块?,即会计模块? (我不这么认为,因为我无法轻易找到它。)
其次,我应该将服务层留在现有模块中,还是将其放在自己的模块中?即服务'模块? (我想可能是后者)。
答案 0 :(得分:1)
如果我理解正确,您将要创建一个“域界面”模块。虽然这没有错,但我没有看到为域模块设置Separated Interface的好处。
因此,最简洁的选择是将接口移动到域模块中。 请注意,这要求您没有从域到其他模块的依赖关系。您应该将域模块放在图层设计的“中心”,因为在DDD中,域是最多的该软件的重要组成部分。
另请参阅Clean Architecture了解支持DDD的体系结构。
您绝对应该将服务模块与域模块分开。它们有不同的关注点:服务模块包含用例逻辑,域模块包含域逻辑。
例如,如果您需要一个新的应用程序接口(比如一个Web服务),那么您只需为此创建一个新的服务模块 - 可以重用域模块。