Нормальная ли это архитектура?

Подскажите, пожалуйста кто разбирается в паттернах и DDD.

В контексте Symfony.

ситуация:

Надо работать с комментариями. Создавать комментарии по АПИ, отдавать по АПИ
для того чтобы создать комментарий, нужен только текст комментария, и id того, что комментируем, 2 поля.
Для этого создал модель
CommentNew {
    text;
    commentable;
}

После того как был создан комментарий, я хочу вернуть информацию о нем. Она содержит уже больше полей.
CommentView {
    text;
    commentable;
    id;
    author: UserObject;
    time;
    files: LinksList;
}

При этом есть сущность Comment, которая имеет почти все поля, что и CommentView, но знает только о связанных файлах (в БД) а не о сгенерированных ссылках.

Получается под один объект выделено 3 класса.

Для того чтобы отдать на клиент CommentView я должен Comment преобразовать в CommentView (со своей логикой). Для того чтобы создать - должен CommentNew преобразовать в Comment (со своей логикой)

Вопросы:
1. Это норм?
2. Как норм если это не
3. Какой паттерн (можно с примером) использовать для "преобразования" одного объекта в другой.
  • Вопрос задан
  • 634 просмотра
Пригласить эксперта
Ответы на вопрос 1
hack504
@hack504
А у симфони есть какая-то тактика и её нужно придерживаться. ("best practices Symfony API").

CommentNew вообще не нужен, по этой идеологии тогда нужно будет создавать и CommentUpdate и CommentDelete и даже CommentLike c CommentDislike -- как видно это все методы API их просто нужно валидировать на нужные поля и передавать нужному методу Comment. А Comment уже вернет CommentView.
?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы