【发布时间】:2011-03-06 12:06:53
【问题描述】:
使用域对象作为映射(或“get”方法)的键是一种好习惯,还是只使用域对象的 id 更好?
用一个例子来解释更简单。假设我有 Person 类、一个 Club 类和一个 Membership 类(连接另外两个)。即,
public class Person {
private int id; // primary key
private String name;
}
public class Club {
private String name; // primary key
}
public class Membership {
private Person person;
private Club club;
private Date expires;
}
或者类似的东西。现在,我想在 Club 中添加一个方法 getMembership。问题是,这个方法是否应该采用 Person 对象:
public Membership getMembership(Person person);
或者,一个人的id:
public Membership getMembership(int personId);
哪个最地道,哪个最方便,哪个最合适?
编辑:许多非常好的答案。我选择不公开 id,因为“Person”(您可能已经意识到,我的真实域与人和俱乐部没有任何关系......)实例很容易获得,但现在它在内部存储在在 id 上散列的 HashMap - 但至少我在界面中正确地公开了它。
【问题讨论】:
-
避免将您的
private部分暴露给其他实体。 -
@DaveJarvis 生活的话。
标签: java oop domain-driven-design