数据映射器:每个型号一个或一个尺寸适合所有?

时间:2015-05-09 18:34:17

标签: model-view-controller

我注意到很多人建议为每个模型创建一个数据映射器,但这可能非常耗时。为什么创建检测对象(模型)属性(变量)并将它们与数据库字段匹配的通用数据映射器是否有益?

1 个答案:

答案 0 :(得分:1)

"为什么创建通用数据映射器并不是有益的"

绝对有好处(例如重复代码较少),但如果您要直接使用它,则存在一些潜在的缺点。一些潜在的陷阱(脱离我的头顶)......

给出这个例子:IUser user = DataMapper.Map(HashTable userRecord);

  • 如果userRecord包含无效数据会怎样?在尝试填充User对象之前,Map方法是否应该验证HashTable是否包含所有相关信息?验证过程会因对象类型而异吗?
  • 如果修改对象以获取构造函数参数怎么办?

我自己一直沿着这条路走下去,最终结果是使用非通用映射器使用通用映射器和其他对象构建了大量对象,最终导致开发人员感到非常困惑(我应该将mapper用于这个对象吗?),以及一些可怕的"聪明的"在映射方法中。

您绝对可以使用通用数据映射器,但您可能需要考虑将其用作抽象基类并在其上编写专门的映射器以避免使用"特殊"当一个对象需要以某种方式改变映射器不支持时,避免一堆深层的,有潜在危险的重构。

[请注意,我不认为自己(甚至是远程)是数据/对象映射环境中的专家,因此请采取一些我建议的任何内容]