« Patrons de conception/Monteur » : différence entre les versions

Contenu supprimé Contenu ajouté
imported>Keilnoth
imported>Gouiggou
Ligne 108 :
private $_garniture = "";
 
public function setPate($pate) { $this.->_pate = $pate; }
public function setSauce($sauce) { $this.->_sauce = $sauce; }
public function setGarniture($garniture) { $this.->_garniture = $garniture; }
}
 
Ligne 118 :
protected $_pizza;
 
public function getPizza() { return $this.->_pizza; }
public function creerNouvellePizza() { $this.->_pizza = new Pizza(); }
 
public abstract public function monterPate();
public abstract public function monterSauce();
public abstract public function monterGarniture();
}
 
/* MonteurConcret */
class MonteurPizzaHawaii extends MonteurPizza {
public function monterPate() { $this.->_pizza.setPate("croisée"); }
public function monterSauce() { $this.->_pizza.setSauce("douce"); }
public function monterGarniture() { $this.->_pizza.setGarniture("jambon+ananas"); }
}
 
/* MonteurConcret */
class MonteurPizzaPiquante extends MonteurPizza {
public function monterPate() { $this.->_pizza.setPate("feuilletée"); }
public function monterSauce() { $this.->_pizza.setSauce("piquante"); }
public function monterGarniture() { $this.->_pizza.setGarniture("pepperoni+salami"); }
}
 
Ligne 145 :
private $_monteurPizza;
 
public function setMonteurPizza(MonteurPizza $mp) { $this.->_monteurPizza = $mp; }
public function getPizza() { return $this.->_monteurPizza.->getPizza(); }
 
public void construirePizza() {
$this.->_monteurPizza.->creerNouvellePizza();
$this.->_monteurPizza.->monterPate();
$this.->_monteurPizza.->monterSauce();
$this.->_monteurPizza.->monterGarniture();
}
}
 
/* Un client commandant une pizza. */
$serveur = new ServerServeur();
$monteurPizzaHawaii = new MonteurPizzaHawaii();
$monteurPizzaPiquante = new MonteurPizzaPiquante();
 
$serveur.->setMonteurPizza($monteurPizzaHawaii);
$serveur.->construirePizza();
 
$pizza = $serveur.->getPizza();
</source>