1

我正在开发一个需要许多单独的对象(类)才能协同工作的项目。我已经想出了解决问题的方法,但我只是想听听其他观点,因为我觉得我错过了一些东西。

所以本质上,我有一个访问者和一个位置类,每个都被初始化并存储在一个变量中,例如 $visitor 和 $location; 两者都具有访问者独有的数据和页面调用中引用的位置。

我想要/需要做的基本上是建立一个“桥梁”,这样我就可以调用一个会影响这两个对象的方法。例如,我希望能够调用 $bridge->favorite(); 除了增加该位置的收藏夹数量外,它还将将该收藏夹引用添加到访问者的个人资料中。

我现在所做的基本上是架起了一座桥梁:

$bridge = new Bridge($locationclass, $visitorclass);
$bridge->favorite();

所以它本质上用最喜欢的方法调用了我拥有的另一个类“bridge”,然后将使用已经设置的两个类。我认为这是一个不错的解决方案,但我觉得我错过了一个更好的解决方案。

所有输入将非常有帮助,感谢您的宝贵时间!

4

2 回答 2

3

如果你需要做这种事情,那就意味着你的应用程序设计得不好。

要回答您的示例,您只需将位置添加到访问者最喜欢的地方即可。
如果您想计算某个位置被添加到收藏夹的次数,请计算有多少访问者将其添加到收藏夹中。不要存储两次相同的信息。

于 2012-05-24T18:56:45.303 回答
1
class Bridge{

private $classes;

function  construct($classes)
{
 $this->classes  = $classes;
}

function _call($name,$params)
{
  foreach($classes as $class)
  {
    if(method_exists($class,$name)){
     return call_user_method_array($name,$class,$params);
    }
  }else{
   ...
  }
}
于 2012-05-24T18:59:40.607 回答