如何为帖子的修改建模?

时间:2011-10-08 10:25:22

标签: oop

假设我需要为Stack Overflow这样的门户创建一个模型,我有一个类Question

有这样的课程是个好主意吗?

public class Question
    {
        public Guid Id { get; set; }
        public int IdCreator { get; set; }
        public List<QuestionRevision> QuestionRevisions { get; set; }
        public List<Comment> Comments { get; set; }
    }

以及包含QuestionRevisionsEditor等字段的班级Content

1 个答案:

答案 0 :(得分:1)

我会从以下内容开始:

public class Question

    private Guid id
    private List<QuestionRevision> revisions
    private List<Comment> Comments 

    Question(id : Guid, text : String)
    getRevisions() : List<QuestionRevision>
    addRevision(revision : QuestionRevision) : void
    getComments() :  List<Comment>
    addComment(comment : Comment) : void

所以这里的要点是:

  • guid和问题文本提供给构造中的对象。这些应该被验证(即非空)。如果Question需要更多设置,请考虑使用构建器模式。
  • 问题中添加了单个修订
  • 问题中添加了一条评论
  • 通过getters访问评论和修订的不可变视图。

我几乎从不喜欢看到一个纯粹是集合的持有者的类,比如QuestionRevisionsQuestion是管理自己的修订并在内部使用自己适当的数据结构来存储它们的好选择(例如,List是明智的)。如果不对EditorContent进一步详细说明,我不确定我是否可以为QuestionRevision执行任何有意义的伪代码。