Bonjour,

J'ai un problème assez complexe à expliquer.

Contexte: Je dois attaquer 2 bases de données différentes (oracle et postgresql) pour générer du flux SVG.

Pour l'instant j'ai
3 classes:
-GetFromBd: Elle contient la grosse partie des requêtes. En fait il s'agit du code qui peut être similaire pour les deux bases de données (les simples 'select from')

-GetFromBdOra et GetFromBdPost: Elles héritent de GetFromBd et contiennent chacune le code propre a leurs systèmes de gestion des formes géométriques dans des base de donnée

1 interfaces:
-GetFromBdInter: Elle contient la déclaration des méthodes de GetFromBdOra et GetFromBdPost

Donc on a
-GetFromBd
-GetFromBdOra extends GetFromBd implements GetFromBdInter
-GetFromBdPost extends GetFromBd implements GetFromBdInter
-GetFromBdInter

Pour l'instant je fais (en gros...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if(ORA)
{
         GetFromBdOra getfrombdora;
         getfrombdora.uneMethodeDeGetFromBd();
         getfrombdora.uneMethodeDeGetFromBdOra();
}
else if(POST)
{
         GetFromBdPost getfrombdpost;
         getfrombdpost.uneMethodeDeGetFromBd();
         getfrombdpost.uneMethodeDeGetFromBdPost();
}
J'aimerais pouvoir faire:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
UneClasseMagique classemagique;
 
//1ere opération
classemagique.uneMethodeDeGetFromBd();
 
//2eme opération
classemagique.uneMethodeDeGetFromBdOraOuPost();
Vu que les 2 classes hérites de GetFromBd(), je pourrais faire la première opération.
La ou je cale, c'est pour la 2eme opération.

Je pensais utiliser un objet "GetFromBdInter" (=interface qu'implémente les 2 classes) mais si je fais ca, impossible de réaliser la première opération. Vu que l'objet n'hérite pas de GetFromBd!


Quelqu'un a comprit?