我正在构建一个 MVC 应用程序,“M”层由服务层、域模型层和映射器层组成。
我的领域模型中的逻辑非常复杂。例如,一个组织有很多员工。当我想修改组织/员工的某些方面,例如他们的工资水平时,我需要查阅组织对象、用户对象和连接两者的员工对象。一般来说,我一直将这些职责放在组成对象(在本例中为组织)上,这很好。
我正在努力解决的一个问题与创建新实体有关。具体来说,当存在管理新实体创建的条件/规则时,它们应该存在于服务层还是域层?
在我看来,最可靠的选择是将逻辑放在域模型层中,但是我的域对象似乎“不那么纯粹”。例如,一个 Employee 对象就是一个 Employee 对象,不管它是谁创建的。但是,如果我创建 Employee 实体的规则取决于创建者是谁,我需要将创建者注入到 Employee 对象中。(我创建 Employee 对象的规则取决于创建它的组织管理员还是任何旧用户)。
将创建规则放在服务层中感觉更自然,但这会引发两个问题。首先,我需要确保对域模型的所有访问都是通过该服务层进行的。(这并不是什么大问题。)更重要的是,我的业务逻辑现在分布在两层中,并且存在更大的混乱可能性。
我怀疑我需要停止推诿,把逻辑放在服务层。你怎么看?
仅供参考,我正在使用 PHP、带有 jQuery/javascript 前端的 Zend 框架。