我有几个Item类型的对象。这些项是有序的,但是它们的顺序可以改变,所以为了使排序更简单,我不想给每个项赋予自己的order
属性。我认为最好是让List在创建成数组时存储每个Item, Item的顺序是这样决定的。(首先,这种方法有什么设计问题吗?)
我的问题是如何通过联系项目本身来获得项目的订单?理想情况下,我想这样做
$item = new Item();
$item->getOrder();
项目必须依赖于List来获得它的顺序,那么它应该如何做呢?
我不完全决定在列表中存储数组中的项。任何其他让事情变得更简单的结构都是好的。
如果项目必须知道列表,则将列表添加为项目的属性,例如parentList
。
如果你想查询List中某项的顺序,在List中创建一个方法。
function orderOf($item){...}
那么现在在
里面$item->getOrder()
简单查询列表
$list = $item->parentList();
return $list->orderOf($this);