bha si !
prend l'exemple des Factory : souvent on fait un truc dans le genre :
Code :
- interface Service { public void doService(); }
- interface ServiceFactory { public Service getService(); }
|
et quand tu implémentes :
Code :
- interface ServiceA implements Service { public void doService() { ... } }
- interface ServiceAFactory implements ServiceFactory {
- public Service getService() {
- Service A a = new ServiceA();
- // brol
- return a;
- }
- }
|
ca t'as jamais perturbé que la factory spécialisée retourne une instance globale (l'interface) plutot que de réellement indiquer le type de Service qui est retourné ?? Quand tu t'en sers via l'interface, pas de problème, mais quand tu accèdes directement à la factory et que ce que tu veux c'est récupérer un ServiceA, tu es obligé de faire un cast ce qui est très con.
là a priori, il deviendrait possible d'écrire ca :
Code :
- interface ServiceAFactory {
- // ca retourne un ServiceA
- public ServiceA getService() {
- Service A a = new ServiceA();
- // brol
- return a;
- }
- }
|
Ce qui est beaucoup plus logique, et qui continue à être valide avec l'interface de ServiceFactory : ce qui est retourné par la méthode getService est un Service.
Message édité par benou le 27-09-2003 à 18:49:16
---------------
ma vie, mon oeuvre - HomePlayer