我应该将对象作为属性或原始ID吗?

时间:2014-10-22 14:08:29

标签: java design-patterns design-principles

这个问题可能基于意见,但我想知道我应该使用哪种原则。这是我的情况。

我有一个名为TravelOffer的课程。这个类看起来像这样:

public class TravelOffer
{
    private final long id;

    private final StartZone startZone;
    private final EndZone endZone;
    private final List<Waypoint> waypoints;

    private final Period startOff;

    private final User travelCreator;
    private final List<User> participantsList;

    private final TravelExtras travelExtras;

    private final CandidateApprovement candidateApprovement;

    private int numberOfSeats;

    private double pricePerPerson;

    private Luggage luggage;

    private boolean additionalLuggageTransport;

    private String additionalDescription;
}

如您所见,有以下属性:

User tavelCreatorList<User> participantsList

我想知道的是它应该是这样还是只是用 String userId 替换User对象,然后从单例类替换以获取将在Hashmap中的User对象。< / p>

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不认为存储ID而不是引用是一个好主意。它会使代码更复杂,因为每次你需要一个与TravelOffer关联的用户时,你必须打电话给你的让他们说DAO返回参考。只要Java使用引用,您就不必担心内存。其他事情:参与者完全适合TravelOffer,因此不应该分开。

比较一下:

travelOffer.getTravelCreator().getName()
userDao.getUser(travelOffer.getTravelCreatorId()).getName()

第一个对我来说看起来更好。

您的问题是否与对象关系映射有关?

答案 1 :(得分:1)

participantsListtravelCreator在逻辑上是否适合TravelOffer?如果是,那么通过Traveloffer建立UseruserId来解除它是没有意义的。如果我们真的需要松散耦合(比如当我们需要根据Id从另一个系统进行查找时),这意味着TravelOffer不需要 User这不是这里的情况。如果TravelOfferUser都是同一系统的一部分,那么最好保持对象的引用而不是id。