我认为观察者模式总是被实现为“静态”的,以便从任何作用域调用,例如
<?php
class Observer {
//在此处附加调用者的作用域
private static $stackTrace = array( );
public static function wasTriggeredOnce() {
//...如果不在堆栈中,则:
self::$stackTrace[] = max( debug_backtrace( ) );
}
}
class YourFramework {
public function launchPlatform() {
//不能让用户两次启动应用程序!
Observer::wasTriggeredOnce();
}
}
//原因是静态的
Observer::hereIsnoNeedToInstantiateAgain();
?>