Как мне смоделировать редакции поста? - PullRequest
0 голосов
/ 08 октября 2011

Допустим, мне нужно создать модель для некоторого портала, такого как переполнение стека, и у меня есть класс 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; }
    }

и класс QuestionRevisions с полями типа Editor и Content?

1 Ответ

1 голос
/ 08 октября 2011

Я бы начал с чего-то вроде:

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

Итак, основные моменты здесь:

  • Текст гида и вопросов поступает на объект строительства. Они должны быть проверены (т. Е. Не нулевые). Рассмотрите шаблон Builder, если для Question требуется дополнительная настройка.
  • К вопросу добавлена ​​одна ревизия
  • К вопросу добавлен один комментарий
  • Доступ к неизменным видам комментариев и ревизий осуществляется через геттеры.

Мне почти никогда не нравится видеть класс, который является чисто держателем для коллекции, как QuestionRevisions. Question - хороший выбор для управления собственными ревизиями и внутреннего использования собственной подходящей структуры данных для их хранения (например, разумен список). Не вдаваясь в подробности о Editor и Content, я не уверен, что смогу сделать какой-либо значимый псевдокод для QuestionRevision.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...