Okay, voici donc un autre exemple moins trivial. Je vais un peu changer d'approche (cela ferait trop d'étapes pour un exemple moins trivial). Je donne une spec, j'en propose l'implé qui me semble cohérente, et j'aimerai savoir comment vous l'implémenteriez:
Irma, la classe des voyantes, ne peut qu'acheter des Voiture. Elle ne l'achète que si c'est une Ferrari rouge.
Est-ce que ça vous semble cohérent? Si non, pourquoi? Comment vous l'implémenteriez?
Irma, la classe des voyantes, ne peut qu'acheter des Voiture. Elle ne l'achète que si c'est une Ferrari rouge.
Code PHP :
<?php
interface Voiture {
public function getColor();
}
interface Ferrari {
}
class F50 implements Voiture, Ferrari {
private $color;
public function __construct($color) {
$this->color = (string)$color;
}
}
class Irma {
public function acheter(Voiture $voiture) {
if ($voiture instanceof Ferrari && $voiture->getColor() == "rouge") {
echo "J'achète!";
}
}
}