在一个对象的构造函数里初始化作为其他对象发现者(Observer[6])的对象是一个常见的模式. 下面几行代码便是一个示例:
class Bettery
{
function Bettery() {…};
function AddObserver($method, &$obj)
{
$this->obs[] = array($obj, &$method)
}
function Notify(){…}
}
class Display
{
function Display(&$batt)
{
$batt->AddObserver("BatteryNotify",$this);
}
function BatteryNotify() {…}
}
但是, 这并不会正常工作, 如果你是这么实例化对象的:
$myBattery = new Battery();$myDisplay = new Display($myBattery);