Je créer un nouveau Héro CalamityJane :
Toujours d'accord ? Pas de soucis ?
Le code original sans CalamityJane était une librairie.
CalamityJane est dans notre projet.
On met à jour la librairie et Conan sait maintenant gérer les Femmes.
Tout joyeux dans mon code je me mets à utiliser cette nouvelle feature ou j'en ai besoin :
Puis plusieurs mois après, j'ajoute un système qui permet à CalamityJane de rencontrer des femmes :
Je débug et je me rends vite compte pourquoi : j'ai oublié de rajouter l'instanceof Women dans CalamityJane.
interface Hero
{
public function askGold($object);
}
interface Beggar
{
public function meetHero(Hero $hero);
public function giveGold($gold);
}
interface Kid
{
public function giveGold($gold);
}
class Conan implements Hero
{
public askGold($object)
{
if ($object instanceof Beggar) {
$object->giveGold($this->gold/2);
}
if ($object instanceof Kid) {
$object->giveGold($this->gold);
}
}
}
class FrancoisdAssise implements Beggar
{
public function meetHero(Hero $hero)
{
$hero->askGold($this);
}
}
$conan = new Conan();
$francoisdAssise = new FrancoisdAssise();
$francoisdAssise->meetHero($conan);
class CalamityJane implements Hero
{
public askGold($object)
{
if ($object instanceof Beggar) {
$object->giveGold(0);
}
if ($object instanceof Kid) {
$object->giveGold($this->gold/2);
}
}
}
$calamityJane = new CalamityJane();
$francoisdAssise = new FrancoisdAssise();
$francoisdAssise->meetHero($calamityJane);
Toujours d'accord ? Pas de soucis ?
Le code original sans CalamityJane était une librairie.
CalamityJane est dans notre projet.
On met à jour la librairie et Conan sait maintenant gérer les Femmes.
class Conan implements Hero
{
public askGold($object)
{
if ($object instanceof Beggar) {
$object->giveGold($this->gold/2);
}
if ($object instanceof Kid) {
$object->giveGold($this->gold);
}
if ($object instanceof Women) {
$object->giveGold($this->gold * 10);
}
}
}
Tout joyeux dans mon code je me mets à utiliser cette nouvelle feature ou j'en ai besoin :
$conan = new Conan();
$superWomen = new SuperWomen();
$superWomen->meetHero($conan);
Et la vie est belle.Puis plusieurs mois après, j'ajoute un système qui permet à CalamityJane de rencontrer des femmes :
$calamityJane = new CalamityJane();
$superWomen = new SuperWomen();
$superWomen->meetHero($calamityJane);
Et bien là, ça ne fait pas du tout ce que j'attendais.Je débug et je me rends vite compte pourquoi : j'ai oublié de rajouter l'instanceof Women dans CalamityJane.