#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; }
}
и класс QuestionRevisions
с такими полями, как Editor
и Content
?
Ответ №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 и текст вопросов передаются объекту при построении. Они должны быть проверены (т.Е. ненулевые). Рассмотрите шаблон Builder, если
Question
требуется дополнительная настройка. - К вопросу добавляется одна ревизия
- К вопросу добавляется один комментарий
- Доступ к неизменяемым представлениям комментариев и изменений осуществляется через средства получения.
Мне почти никогда не нравится видеть класс, который является чисто держателем для коллекции, например QuestionRevisions
. Question
это хороший выбор для управления собственными ревизиями и внутреннего использования собственной соответствующей структуры данных для их хранения (например, список имеет смысл). Без дальнейших Editor
подробностей, и Content
я не уверен, что смогу выполнить какой-либо значимый псевдокод для QuestionRevision
.