【问题标题】:Data Mapper: An domain object should never call its data mapper?数据映射器:域对象永远不应该调用它的数据映射器?
【发布时间】:2010-12-30 22:22:00
【问题描述】:

我正在阅读 Martin Fowler 的关于企业应用程序架构设计模式的书,但它是德文版。因此,在我的书第 193 页(如果你有的话)中,他用德语写道,域对象(业务逻辑层的对象)不应该依赖于它们的数据映射器。那么这意味着什么?如果我有一个 User 对象和一个 UserDataMapper 类,那么 User 的任何方法都不能调用 UserDataMapper 的方法吗?或者换句话说:如果没有 UserDataMapper,它必须仍然可以使用 User 类而不会出错?

【问题讨论】:

    标签: datamapper


    【解决方案1】:

    在我的版本中(用英文写的,所以确切的翻译可能会有所不同),完整的引用是:

    “有时您可能需要域 对象上调用 find 方法 数据映射器。但是,我发现 使用良好的延迟加载(200),您可以 完全避免这种情况。为了更简单 但是,应用程序可能不值得 试图用 关联和延迟加载 (200)。 不过,您不想添加 从您的域对象依赖 您的数据映射器。

    您可以通过使用 分离接口 (476)。 将任何 查找领域代码所需的方法 进入一个接口类,你可以 放在域包中。”

    因此,Fowler 建议您使用分离接口来解决任何包依赖问题。

    在实践中,这些映射往往是字段和方法等上不显眼的属性,因此模型不知道您正在使用(例如)Hibernate 的事实,并且您可以将映射器更改为其他东西而不会破坏一切.

    此外,有时人们将 Data Mapper 部分拆分为映射部分(“此属性映射到此列”)和单独的服务部分(“这是如何插入数据”),这进一步分离了关注点。

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 2011-04-13
      • 2016-10-10
      • 2016-12-04
      • 1970-01-01
      • 2010-10-04
      • 2013-11-03
      • 2019-09-24
      • 2011-05-12
      相关资源
      最近更新 更多