我正在阅读POEAA的体系结构模式一章,Fowler说:“随着域逻辑变得越来越复杂,您开始转向富领域模型(116),活动记录(160)的简单方法开始崩溃。当您将域逻辑分解为更小的类时,域类与表的一对一匹配开始失败。关系数据库不处理继承,因此很难使用Gang of Four和其他整洁的OO模式。随着域逻辑变得活跃,您希望能够测试它,而不必一直与数据库对话。”
我真的不太明白这一点。所谓“域类到表的一对一匹配”,他的意思是只针对没有关联或单个表继承层次结构的类吗?
为什么将域逻辑分解为较小的类会导致模式失败?
发布于 2011-04-12 22:24:01
他想说的是,更复杂的领域模型通常不仅仅是“表中的数据”。Fowler谈到的这些更复杂的模型是从不同的表、视图甚至其他来源获取数据的模型。
活动记录模式不太适合于此目的,而仅结合模型类(仅包含业务逻辑,不与数据访问层通信)的DataMapper模式可能更适合于这样的情况。
活动记录模式在这里失败了,因为它或多或少直接映射到数据库中的表。
我不知道确切的模式定义,所以如果我错了,请纠正我。
发布于 2011-04-12 22:11:02
不,我认为他是在谈论领域逻辑。使用活动记录,对象同时携带数据和行为。所以这是一对一的匹配。如果您开始分离数据/行为,就像在Data Mapper模式中一样,它就变成了一对多。我的印象是,有时你真的必须像学术废话一样阅读那本书,才能理解他的意思。:-)
https://stackoverflow.com/questions/5624319
复制相似问题