我正在实现一个调用各种对象方法的消息服务。。这很像观察者模式。。
事情是这样的:
class Dispatcher {
...
public function message($name, $method) {
// Find the object based on the name
$object = $this->findObjectByName($name);
if(!$object->decorations))
// Decorate the object
$object = new $name($object); // This is where it locks up.
$object->decorations = true;
}
return $object->$method();
...
}
class A {
function __construct()
{
$Dispatcher->message("B", "getName");
}
public function getName() {
return "Class A";
}
}
class B {
function __construct()
{
// Assume $Dispatcher is the classes
$Dispatcher->message("A", "getName");
}
public function getName() {
return "Class B";
}
}
它在两个对象都未初始化时锁定。它只是在消息之间来回传递,不能初始化任何人。
我在寻找某种队列实现,它可以让消息互相等待。。返回值仍然被设置的地方。我希望在A级和B级中有尽可能少的样板代码。
我得到很多关于
not_initialized
方法,不幸的是,我觉得讨论的方向不对。那是我的错,我会把情况解释得再详细一点(我希望能解释得更好)。
$object
实现一个装饰器模式-即
$对象
当我初始化类A和类B时获取更多的功能(方法)。我需要使用消息传递方法中的装饰提供的功能,这就是为什么如果消息传递方法尚未修饰,请对其进行装饰。我真的不认为
未初始化
如果你说
$objectA