Je suis désolé de ne pas avoir trouvé de titre plus descriptif. Mon problème est le suivant. Supposons que vous ayez deux classes A et B et vous savez qu'il peut parfois arriver qu'un code essaye d'instancier un objet de type A alors que ce qui est réellement nécessaire est un objet de type B. Le point est le code pour décider lequel l'un est le bon objet appartient naturellement à la classe A et non au code client.Laisser un objet décider de sa classe
javascript (ok, js n'a pas cours, mais il fait le point clair), vous pouvez simplement faire
function A() {
if(some_condition) {
return new B();
}
//else we proceed to customize and return our object
}
Je veux faire quelque chose de similaire en PHP. La meilleure chose que je peux trouver est
class A {
private function __construct() {
//whatever you need to do
}
public static function getInstance() {
if(some_condition) {
return new B();
}
else {
return new A();
}
}
}
Le problème est que le code client aura toujours savoir que A est spécial et vous devez instancier des objets avec une méthode statique.
Existe-t-il un moyen de déléguer à A le choix du type d'objet à renvoyer de façon transparente?