Created
December 3, 2012 23:09
-
-
Save letitride/4198951 to your computer and use it in GitHub Desktop.
php observer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
abstract class Observer | |
{ | |
abstract public function update( $generator ); | |
} | |
class AddressObserver extends Observer | |
{ | |
public function update( $generator ){ | |
print $generator->get_data() . "\n"; | |
} | |
} | |
class GpsObserver extends Observer | |
{ | |
public function update( $generator ){ | |
$address = $generator->get_data(); | |
print "lat:35.690921 lon:139.700258 \n"; | |
} | |
} | |
abstract class Data | |
{ | |
private $_observers = array(); | |
public function add_observer( $observer ){ | |
$this->_observers[] = $observer; | |
} | |
public function notify_observer(){ | |
foreach( $this->_observers as $ovserver ){ | |
$ovserver->update( $this ); | |
} | |
} | |
abstract public function get_data(); | |
abstract public function execute(); | |
} | |
class AddressData extends Data | |
{ | |
private $_address; | |
public function get_data(){ | |
return $this->_address; | |
} | |
public function execute(){ | |
$this->_address = "Shinjuku"; | |
parent::notify_observer(); | |
} | |
} | |
$number_generator = new AddressData(); | |
$number_generator->add_observer( new AddressObserver() ); | |
$number_generator->add_observer( new GpsObserver() ); | |
$number_generator->execute(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment