Если упорядочение - это то, что модель данных должна модально хранить и хранить, то упорядочение должно быть частью графа сущностей в любом случае.
Хорошим, легким решением является создание Order
объекта, который имеет отношение один к одному с фактическим заказываемым объектом.Чтобы упростить обновление, создайте связанный список, подобный структуре объектов.Примерно так:
Order{
order:int;
orderedObject<--(required,nullify)-->OrderObject.order
previous<--(optional,nullify)-->Order.next;
next<--(optional,nullify)-->Order.previous;
}
Если вы создаете пользовательский подкласс, вы можете предоставить метод insert
, который вставляет новый объект в цепочку, а затем отправляет сообщение по отношениям next
и сообщает каждомуОбъект увеличивает свой порядок на единицу, а затем сообщение на следующий.delete
метод делает противоположное.Это делает упорядочение неотъемлемой частью модели и хорошо инкапсулировано.Для этого легко создать базовый класс, чтобы вы могли использовать его по мере необходимости.
Большим преимуществом является то, что для этого требуется, чтобы только маленькие Order
объекты были в живых в памяти.
Редактировать:
Конечно, вы можете расширить это с помощью другого связанного объекта для предоставления информации раздела.Просто свяжите эту сущность с сущностью Order
, затем укажите номер заказа, указанный в разделе.