@kot-samolet

Какой класс отвечает за эту функцию?

Есть класс User отвечающий за действия с пользователем и класс Payment отвечающий за финансовые операции. И вот юзер пополнил уже себе баланс, деньги у него на счету и он жмёт кнопку Upgrade что бы улучшить свой аккаунт до платного. Изменения произойдут и в таблице users и в таблице payments т.к. будет зафиксировано когда и на что были потрачены деньги, которые лежат на чету.
Какой класс должен осуществить это действие Upgrade: User или Payment и почему?
  • Вопрос задан
  • 291 просмотр
Решения вопроса 5
27cm
@27cm
TODO: Написать статус
Можно сделать отдельный класс UserAccountManager:
UserAccountManager::upgrade($user);
Ответ написан
Комментировать
@khrisanfov
Программист
Согласно шаблону Information Expert нужно назначит эту обязанность тому классу, который обладает достаточной информацией для ее выполнения. Если такого класса не существует, то можно воспользоваться шаблоном Pure Fabrication и создать новый класс для этой обязанности, как посоветовал другой автор ответа.
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Отдельная сущность которая отвечает за подписки и их продление/активность.

Paymentов может быть много например для разных систем, а баланс один у юзера.
Поэтому подписки отдельно от оплаты.
Ответ написан
Комментировать
TheTalion
@TheTalion
И тот, и тот. Если я правильно понял структуру. Payment должен обновить счет, а User тип аккаунта, но лучше, конечно, сделать отдельный класс.
Ответ написан
Комментировать
@vism
Можно плодить классы, как советуют другие, и они так то правы. Это Тру вей.
НО. это как с нормализацией БД и синдромом Миддла, когда везде все видят паттерны.

Если система не большая и не предполагает постоянных доработок и изменений и т.п.
ТО в класс User. Апдейт относительно юзера - значит в юзера. Все :)
Кто делает - что делает.
Код просто должен быть логичным и как можно менее запутанным.
Увеличение гибкости - увеличение запутанности.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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