我認為觀察者模式總是實作為「靜態」以便從任何範圍調用,例如
<?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();
?>