前几天我问了关于选择一种方法来存储用户配置文件的问题,并收到了来自 David Thomas Garcia 的有趣回复,建议我使用表模块设计模式。看起来这可能是我想要采取的方向。我在谷歌上出现的所有内容似乎都是相当高水平的讨论,所以如果有人能指出一些例子的方向或让我更好地了解所涉及的具体细节,那就太棒了。
Kevin Loney
问问题
13935 次
1 回答
39
最好的参考是 Martin Fowler 的“企业应用程序架构模式”:
这是表模块部分的摘录:
表模块用数据库中的每个表一个类来组织域逻辑,并且一个类的单个实例包含将作用于数据的各种过程。与领域模型的主要区别在于,如果您有很多订单,领域模型每个订单将有一个订单对象,而表格模块将有一个对象来处理所有订单。
表模块在您为用户配置文件数据描述的灵活数据库架构中特别有用,基本上是实体-属性-值设计。
通常,如果您使用域模型,则基础表中的每一行都将成为一个对象实例。由于您将用户配置文件信息存储在多行中,因此您最终不得不创建许多域模型对象,而您真正想要的是一个封装所有用户属性的对象。
相反,表模块使您更容易编写适用于基础数据库表中多行的逻辑。如果您为给定用户创建配置文件,您将指定所有这些属性,并且 Table Module 类将具有将其转换为一系列INSERT
语句的代码,每个属性一行。
$table->setUserProfile( $userid, array('firstname'=>'Kevin', 'lastname'=>'Loney') );
同样,查询给定用户的个人资料将使用表格模块将查询结果集的多行映射到对象成员。
$hashArray = $table->getUserProfile( $userid );
于 2009-01-11T23:25:01.250 回答