PHP / *** Obser Mode ** Observer Defines a one-to-many dependency * Make one or more observer objects to monitor a topic object * The change in such a topic object can notify all The observer objects depend on this object * make these observer objects automatically update. ** @Author doodoo
/ *** An abstract theme interface is an observer * / interface subject {public function attach; public function details (Observer $ OBSERVER); public function notifyobservers ();}
/ * *** Specifically the observed real interface * / class MySubject implements Subject {private $ observers = array (); public function attach (Observer $ observer) {$ this-> observers [] = $ observer;} public function Detach (Observer $ OBSERVER) {$ Key = Array_Search ($ OBSERVER, $ THIS-> OBSERVERVERS); if (false! = $ key) {unset ($ THIS-> Observers [$ key]);}} public function notifyobservers ) {IF ($ OBSERVER INSTANCEOF OBSERVER) {$ OBSERVER-> Update ();}}} / ** * Number of observer * / public function getCountobservers () {Return SizeOf ($ this-> observers);}}
/ *** Observer interface * / interface observer {public function update ();}
/ *** Specific viewer, used to get the subject's notification * / class myobserver imports observer {private $ ID = null; public function __construct () {$ this-> id = UNIQID ();} public function update () { Echo "Received Notice!"; Echo $ this-> ID; Echo "
/ R / N";}}
$ OBSERVER1 = New Myobserver (1); $ OBSERVER2 = New Myobserver (2); $ OBSERVER3 = New MYOBSERVER (3);
$ Subject = new mysubject (); $ subject-> attach ($ OBSERVER1); $ SUBJECT-> Attach ($ OBSERVER2); $ SUBJECT-> Attach ($ OBSERVER3); Echo "Observer total:" $ subject-> GetCountobServers (). "
/ r / n";
$ subject-> notifyobservers (); echo "/ r / n";
?>