Data Mapper应该引用域模型吗?

时间:2011-01-11 13:55:36

标签: design-patterns domain-driven-design dns datamapper

嘿伙计们。 我正在阅读Martin Fowler的PoEA。 Data Mapper模式正在以这种方式使用Domain对象:

class AbstractMapper... 

   protected DomainObject load(ResultSet rs) throws SQLException {
      Long id = new Long(rs.getLong(1));
      if (loadedMap.containsKey(id)) return (DomainObject) loadedMap.get(id);
      DomainObject result = doLoad(id, rs);
      loadedMap.put(id, result);
      return result;
   }
   abstract protected DomainObject doLoad(Long id, ResultSet rs) throws SQLException;

class PersonMapper...

   protected DomainObject doLoad(Long id, ResultSet rs) throws SQLException {
      String lastNameArg = rs.getString(2);
      String firstNameArg = rs.getString(3);
      int numDependentsArg = rs.getInt(4);
      return new Person(id, lastNameArg, firstNameArg, numDependentsArg);
   }

这意味着DAL的Data Mapper引用了Domain。我认为DAL一定不能有这样的参考。你觉得怎么样?

1 个答案:

答案 0 :(得分:2)

任何层(包括表示层或数据访问层)都可以引用域模型。但是,域模型不应该引用这些层,因此可以重用它来支持备用接口和持久性策略。