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