设计类参考其他类(对象)或尽可能多地使用其他类的值?

时间:2014-08-23 19:12:44

标签: java class-design

让我们举一个简单的Blogging应用程序的例子。给定BlogPost类。

public class BlogPost {
    private long postId;
    private String postTitle;
    private LocalDateTime postedDate;
    //BlogStatus is an enum
    private BlogStatus postStatus;
   //Getters/Setters
}

以下哪两个会做出更好的设计?为什么?

public class Comment {
    private long commentId;
    private long blogPostId;
    private LocalDateTime commentDateTime;
    private long repliedToCommentId;
    private String commentText;
   //Getters/Setters
}

OR

public class Comment {
    private long commentId;
    private BlogPost blogPost;
    private LocalDateTime commentDateTime;
    private Comment commentedFor;
    private String commentText;
   //Getters/Setters
}
  1. 如果我不使用任何ORM框架会有什么不同吗?
  2. 如何决定何时选择哪一个?
  3. 此处BlogPostComment一无所知,如果知道该怎么办?
  4. 可能是我所采取的例子太琐碎,如果一个更好的非平凡的例子有帮助,我将不胜感激。

    三江源。

1 个答案:

答案 0 :(得分:0)

我建议BlogPostComment建立一对多的关系。 Comment同时引用了BlogPostComments列表(例如,持有对评论的回复)。所以你的第二种方法更接近我的想法:

public class Comment {
    private long commentId;
    private BlogPost blogPost;
    private LocalDateTime commentDateTime;
    private Comment commentedFor;
    private List<Comment> reponses;
    private String commentText;
   //Getters/Setters
}