Могу ли я добавить функции addtocart(), removefromcart(), createorder(), executeorder() в класс пользователя?

Я пытаюсь построить приложение в интернет-магазине, и это моя диаграмма классов https://stackru.com/images/0028c0c2a5ad6c70c04f0ed18bff54fe4edf6b0f.png

Я дал обязанности и функциональность своим классам, но для меня не очевидно, как пользователь класса будет взаимодействовать с порядком и классом корзины. это нормально, например, добавить функции addtocart(), removefromcart(), createorder(), executeorder() и т. д., в пользовательский класс??? Проблема для меня заключается в том, что эти функции не имеют отношения к обязанностям пользовательского класса, но с другой стороны, между ними существует композиционная связь, а в некоторых случаях пользовательский класс должен использовать корзину и класс заказов. Заранее спасибо.

1 ответ

Вам нужно разбить этот дизайн на подсистемы: управление клиентами, выставление счетов, каталог, заказ, оплата и покупки.

Вам также понадобятся подсистемы для управления пользовательским интерфейсом и управления хранилищем данных, но у вас обычно есть библиотеки и интегрированные среды для упрощения их реализации (например, MVC и постоянные среды).

Вы можете получить классы, которые похожи в разных подсистемах (например, "клиент" в управлении клиентом и в порядке), но вам также нужно учитывать, что классы играют разные роли в этих разных контекстах.

Я не большой поклонник DDD, но это простое введение в разделение приложений.

Другие вопросы по тегам