petite précision sur le pattern Observer
Posté : 31 janv. 2013, 01:02
Bonjour/bonsoir tout le monde,
Je suis en train de voir les D patterns du gang. Il y en a un que j'aimerai avoir des précisions. Voilà le code :
2. Pourquoi une méthode static pour l'affichage ?
3. Je suis pas très copain avec la déclaration static. Pouvez vous m'en dire un peu plus svp ?
En vous remerciant par avance, je vous souhaite à toutes et tous bon dev.
Bien à vous
Je suis en train de voir les D patterns du gang. Il y en a un que j'aimerai avoir des précisions. Voilà le code :
class CD {
public $title = "";
public $band = "";
protected $_observer = array();
/*
* __construct()
* @param $title,$band
*/
function __construct($title,$band) {
$this->title = $title;
$this->band = $band;
}
public function attachObserver($type,$observer){
$this->_observer[$type][] = $observer;
}
public function notifyObserver($type){
if(isset($this->_observer[$type])){
foreach($this->_observer[$type] as $observer){
$observer->update($this);
}
}
}
public function buy(){
//actions of buying
$this->notifyObserver('purchased');
}
}
class BuyCDNotifyStreamObserver {
function update(CD $cd){
$activity = "The CD named {$cd->title} by ";
$activity .= "{$cd->band} was just purchased.";
ActivityStream::addNewItem($activity);
}
public static function tempAddNewItem($item){
echo $item;
}
}
class ActivityStream {
public static function addNewItem($item){
echo $item;
}
}
function __autoload($class){
require_once $class.".php";
}
$title = "Waste of a Rib";
$band = "Never Again";
$cd = new CD($title,$band);
$observer = new BuyCDNotifyStreamObserver();
$cd->attachObserver('purchased',$observer);
$cd->buy();
1. L'auteur du livre utilise une 3e class pour l'affichage. Or je viens d'implémenter une méthode dans l'Observer. Je pense que c'est une erreur d'implémenter une telle méthode puisque la classe ne fait qu'observer (et elle doit le faire bien). Suis je dans la bonne direction ?2. Pourquoi une méthode static pour l'affichage ?
3. Je suis pas très copain avec la déclaration static. Pouvez vous m'en dire un peu plus svp ?
En vous remerciant par avance, je vous souhaite à toutes et tous bon dev.
Bien à vous