Я пишу объектно-ориентированную программу, чей бизнес-процесс требует объекта «билета». Объект «билет» действует двумя способами. Это акции, которые должны быть проданы, и это акции, которые мы либо держим на основе продажи или возврата, либо взяли на себя обязательство купить.
По этой причине у билета в процессе продажи может быть состояние «доступно» или «продано» (есть другие состояния, но это важные). Билет также как состояние в отношении статуса SOR, он либо «сор», либо «куплен».
Теоретически возможно, что билет «sor» может быть «доступным» или «проданным», также возможно, чтобы купленный билет был «доступным» или «проданным». Два набора состояний почти не имеют прямого отношения друг к другу. Предполагается, что «проданный» билет в конечном итоге станет «купленным», а «доступный» билет никогда его не сделает. Вот и все.
Так я был бы прав, чтобы проектировать объект с двумя отдельными и независимыми состояниями? Или он должен иметь только одно государство, которое включает в себя все вышеперечисленное? Что такое лучшая практика?
ДОПОЛНИТЕЛЬНО: Итак, вот хедрекер, пока я жду своего часа для помощи в этом, я вернулся к своему анализу и есть еще один странный слой к этому. У «Билетов» есть подобъекты, называемые «Цены», в которых указывается наличие билета, который может быть продан взрослому по одной цене, ребенку - по другой, а пенсионер - по третьей.
Когда билет находится в состоянии «SOR», которое отмечается на уровне билета, но когда он входит в состояние «Покупка», которое регистрируется по цене, потому что билет может иметь несколько возможных цен, но когда он оплачен Оплачивается только на одном уровне (это связано с такими вещами, как вместимость места).
Аналогично, когда билет «доступен», он имеет несколько возможных цен, но он «продается» по сравнению с «ценой», потому что именно тогда клиент принял решение купить, например, один взрослый, два детских билета. Билеты на определенное мероприятие могут быть полностью скуплены взрослыми или в основном проданы детям, и, очевидно, обычно где-то посередине, но информация, связанная с состояниями, происходит в двух разных объектах. Имеет ли это значение?