bla*_*e24 11 php model-view-controller activerecord datamapper poeaa
我正在阅读POEAA的架构模式章节,Fowler说"随着域逻辑变得越来越复杂,你开始转向丰富的域模型(116),Active Record(160)的简单方法开始崩溃当你将域逻辑分解为较小的类时,域类与表的一对一匹配开始失败.关系数据库不处理继承,因此很难使用策略[Gang of Four]和其他简洁的OO模式随着域逻辑变得越来越强大,你希望能够在不必经常与数据库通信的情况下对其进行测试."
我真的不明白这一点.通过"域类与表的一对一匹配",他是否仅表示没有关联或单表继承层次结构的类?
为什么将域逻辑分解为较小的类会导致模式失败?
他试图说的是,更复杂的领域模型通常不仅仅是"来自表格的数据".Fowler所讨论的这些更复杂的模型是从不同的表,视图或甚至其他来源获取数据的模型.
Active Record模式不太适合这个目的,DataMapper模式只与模型类(仅包含业务逻辑,不与数据访问层通信)相结合,可能更适合这种情况.
Active Record模式在这里失败,因为它或多或少地直接映射到数据库中的表.
我不知道确切的模式定义,所以如果我错了请纠正我.
不,我认为他在谈论领域逻辑。通过活动记录,对象同时携带数据和行为。所以这是一场一对一的比赛。如果您开始分离数据/行为,就像在数据映射器模式中一样,它就会变成一对多。我的印象是,有时你真的必须像读学术废话一样读那本书才能理解他的意思。:-)
| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |