我正在整合Zend框架 and 学说2,我正在发现服务层.
现在我明白(我错了吗?)我有两种可能的架构:
- A model,其中类包含域逻辑,即属性 + getter/setter + 复杂方法
- A 轻量化模型,其中类包含属性 + getters/setters 和Service层,包含领域逻辑,并修改模型类
各自的优点/缺点是什么?
通过将域逻辑置于模型外部而失去 OOP 对我来说似乎很奇怪,所以我不明白为什么要使用服务层。
是什么让您认为您的服务层是external到你的模型?事实并非如此。事实上,它是模型的核心部分,还有实体、存储库等。
如果您使用 Doctine2,您将需要一个服务层。原因之一是您不希望您的实体了解 EntityManager(损害可测试性)。另一个原因是您也不希望控制器驱动 EM(控制器的工作不是了解持久性)。
我通常使用的架构中,服务层是控制器与模型的接口。服务层公开对实体进行操作的函数(将它们作为参数,或返回它们,或两者兼而有之)。实体的持久性被服务层隐藏。服务类要么驱动 EM 和存储库本身,要么将其委托给控制器永远不会知道存在的其他代码。
因此,服务层提供了控制器可以用来操作您的业务数据的 API。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)