我正在尝试解决我的 PHP 代码中的一个问题,但这也是我在其他代码中也无法解决的问题。
我有一个必须属于一个且仅一个集合的对象。我将主要从集合的角度访问这些对象。如果不通过集合,其他代码不会被期望找到对象。
所以,我过去处理这个问题的方式是给对象一个对集合的引用。通过这种方式,我们尝试满足 Object 只能属于一个 Collection。然后我会将对象添加到集合中。
public function __construct(Collection $c)
{
$this->setCollection($c);
}
public setCollection(Collection $c)
{
$this->collection = $c;
$c->addObject($this);
}
这与“不要重复自己”是一个明显的矛盾。之所以出现,是因为需要轻松访问对象集合和要求对象仅属于一个集合的要求彼此不一致。对象知道它在集合中,而集合知道对象在集合中。如果其中任何一个不同步,系统就会损坏。
当您开始尝试编写代码以将对象从一个集合移动到另一个集合时,问题就变得很明显了。或者在删除对象时。
那么,有没有人找到解决此类问题的方法?有什么我应该尝试的吗?最后,我可以通过大量的双重检查使其工作,但似乎必须有更好的方法。