Zend Framework不使用ActiveRecords,而是使用表数据网关和行数据网关模式,并使用DataMapper将行数据网关的内容映射到模型,因为ActiveRecord在模型没有1时发生故障: 1映射到数据库表. Zend快速入门指南中有一个example of this.
对我来说,他们的例子看起来非常臃肿,到处都是大量的吸气剂和制定者.我发现了各种关于Domain Driven Design的博客文章,认为使用这么多的getter和setter是不好的做法,因为它将所有内部模型数据暴露给外部,因此它没有公共属性的优势. Here is one example.
我的问题:如果你删除那些getter和setter,你将如何呈现你的观点?在某些时候,数据必须点击视图,以便您可以实际向用户显示某些内容. DDD建议之后似乎打破了MVC中M和V之间的分离.继MVC和Zend之后,似乎打破了DDD,让我为所有模型输入了大量的getter,setter和DataMappers.除了做大量的工作外,它似乎也违反了DRY.
我真的很感激一些(链接)好的例子或更多关于它们如何组合在一起的信息.我正在努力提高我的架构和设计技巧.
额外的东西,与答案没有直接关系,但更侧重于DDD:
(免责声明:我对Zend Framework的唯一了解就是我在链接文章中读到的内容.)Zend Framework使用的是DataMappers而不是Repositories.这真的是DDD吗?好吧,Fowler’s interpretation of a Repository可能会说不.但是,Eric Evans表示DDD Repository可以非常简单.最简单的,Repository是一个DataMapper(参见DDD书).对于更复杂但仍然是DDD的东西,请参阅Fowler文章. DDD具有可能与模式定义不同的概念存储库.
我恳请您继续阅读有关域驱动设计的内容.我认为假设getter和setter违反DDD存在缺陷. DDD专注于领域模型和实现这一目标的最佳实践.存取器只是一个小细节.