我正在尝试构建我的第一个CRUD应用程序,我不明白是否应该使用包含getter和setter的对象。
考虑到Zend Framework Quick Start tutorial的模型结构包含:{/ p>
如果域对象(如Zend快速入门教程中所示)仅由getter和setter组成,那么这是一种反模式吗?从某种意义上说,我们将域对象与事务脚本分开?
请告知。
答案 0 :(得分:3)
如果您正在尝试构建真正的域模型(又称域驱动设计的域模型)并最终只有状态且没有行为的实体,那么贫血域模型就是反模式。
对于简单的CRUD应用程序,贫血域模型可能是最佳实践,尤其是当您拥有使您的工作非常轻松的框架时。
请参阅Martin Fowler关于Anemic Domain Model以及Greg Young's Article的文章。
答案 1 :(得分:2)
域对象与软件的业务逻辑分离。这是procedural programming的一个重要概念。
然而,这种模式被一些开发人员认为是反模式的候选者,这意味着它可能是一种无效的实践。
事实上你可以考虑不利之处
我认为最值得考虑的一点是,域模型的对象无法在任何时候保证其正确性。因为它们的突变发生在分离的层中。
我也使用zend框架开发了一个CRUD应用程序。逻辑和数据之间的明确分离非常好,但是当你进步时,你意识到层和映射器的数量越来越大。尽可能多地重用您的代码并避免出版。