我正在做一个需要很多单独的对象(类)才能协同工作的项目。我已经想出了一个解决问题的方法,但我只是想听听其他一些观点,因为我觉得我错过了一些东西。
所以从本质上讲,我有一个访问者和一个位置类,每个都经过初始化并存储在一个变量中,例如$visitor和$location;两者都具有访问者独有的数据和页面调用中引用的位置。
我想要/需要做的本质上是建立一个"桥梁",这样我就可以调用一个会影响这两个对象的方法。例如,我希望能够调用$bridge->favorite();除了增加该位置的收藏夹数量外,它还会将该收藏夹引用添加到访问者的个人资料中。
我现在所做的基本上是一座桥梁:
$bridge = new Bridge($locationclass, $visitorclass);
$bridge->favorite();
所以它本质上用方法收藏夹调用我的另一个类"bridge",然后使用已经设置的两个类。我认为这是一个不错的解决方案,但我觉得我错过了一个更好的解决方案。
所有的意见将非常有帮助,感谢您的时间!
如果你需要做这种事情,这意味着你的应用程序设计得不好。
要回答您的示例,您所要做的就是仅将位置添加到访问者最喜欢的位置。
如果您想计算某个位置被添加到收藏夹的次数,请计算有多少访问者在他们的收藏夹中拥有该位置。不要存储两倍相同的信息。
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{
...
}
}