我有几个Item类型的对象。这些项目是有序的,但它们的排序可以改变,所以为了简化这个排序,我不想给每个项目提供自己的order
属性。我认为最好让List存储每个Item,因为它可能会被创建到一个数组中,并且项目的顺序会以这种方式决定。 (首先,这种方法的设计问题是什么?)
我的问题是如何通过联系项目本身来获取项目的顺序?理想情况下,我想做这样的事情
$item = new Item();
$item->getOrder();
该项目必须依赖于List来获取其订单,那么它应该如何做呢?
我还没有完全决定将项目存储在List中的数组中。任何其他让事情变得简单的结构都很好。我试图以一种良好的OOP方式做到这一点。
答案 0 :(得分:2)
如果项目必须知道列表,请将列表添加为项目的属性,例如parentList
。
如果您想要询问列表中某个特定项目的顺序,请在列表中创建一个方法。
function orderOf($item){...}
所以现在在你的
里面$item->getOrder()
只需查询您的列表
$list = $item->parentList();
return $list->orderOf($this);