21-05-2015, 12:38 PM
Cas 5 :
Bah pas vraiment c'est toute la logique derrière East, tu envoies toujours un message et tu donnes le moyen que l'on te réponde.
Tout le principe est basé là dessus.
Si tu ne faisais pas du East tu te dirais je fais askPaper($policier) car tu te dis qu'il peut demander autre chose au Policier avant de répondre. Mais tu ne le feras pas systématiquement, tout comme tu ne feras pas toujours un ask mais souvent un getter.
Vu que le principe de East c'est d'envoyer un message et de donner le moyen de te répondre, tu feras TOUJOURS askSomething($asker)
au minimum bien entendu.
Quand je fais :
Le délinquant est obligé de parler avec Policier selon le choix du dialogue du Policier (via l'interface Policier)
C'est le Policier qui a demandé des choses à Personne, donc c'est normal que ça soit Personne qui s'adapte à son discours.
Là le délinquant parle au Policier de la façon dont il veut alors que c'est le Policier qui a demandé des choses à Personne.
Donc Policier doit s'adapter à Personne.
Ça peut sembler sans importance. Pourtant quand tu vas changer Delinquant pour qu'il puisse retourner autre chose que juste Papier,
tu vas devoir obligatoirement changer Policier, alors que tu voulais peut-être qu'il te retourne autre chose pour un besoin qui a aucun rapport à Policier.
Bah pas vraiment c'est toute la logique derrière East, tu envoies toujours un message et tu donnes le moyen que l'on te réponde.
Tout le principe est basé là dessus.
Si tu ne faisais pas du East tu te dirais je fais askPaper($policier) car tu te dis qu'il peut demander autre chose au Policier avant de répondre. Mais tu ne le feras pas systématiquement, tout comme tu ne feras pas toujours un ask mais souvent un getter.
Vu que le principe de East c'est d'envoyer un message et de donner le moyen de te répondre, tu feras TOUJOURS askSomething($asker)
au minimum bien entendu.
Quand je fais :
<?php
interface Policier
{
public function askMatriculeByPersonne(Personne $personne);
}
interface Personne
{
public function askPapier(Policier $policier)
}
class Delinquant implements Personne
{
public function askPapier(Policier $policier)
{
// J'ai beau être un délinquant, je ne peux faire avec Policier
// qu'une seule chose askMatriculeByPersonne et rien d'autre
}
}
Le délinquant est obligé de parler avec Policier selon le choix du dialogue du Policier (via l'interface Policier)
C'est le Policier qui a demandé des choses à Personne, donc c'est normal que ça soit Personne qui s'adapte à son discours.
interface Personne
{
public function getPapier(): Papier
}
class Delinquant implements Personne
{
public function getPapier(): Papier
{
return $this->papier;
}
}
Là le délinquant parle au Policier de la façon dont il veut alors que c'est le Policier qui a demandé des choses à Personne.
Donc Policier doit s'adapter à Personne.
Ça peut sembler sans importance. Pourtant quand tu vas changer Delinquant pour qu'il puisse retourner autre chose que juste Papier,
tu vas devoir obligatoirement changer Policier, alors que tu voulais peut-être qu'il te retourne autre chose pour un besoin qui a aucun rapport à Policier.