Bonjour à tous,
J'ai mis en place un strategy pattern pour l'écriture d'un analyseur de fichiers textes. L'idée est d'appliquer différentes stratégies à un même fichier en fonction des besoins : récupérer certaines infos, faire des calculs statistiques, etc.
Mon soucis réside dans une modélisation objet propre et cohérente des classes externes utilisées lors des différentes stratégies. Attention, pas d'héritage multiple (code Java ou PHP).
Pour être plus concret :
- il s'agit de fichiers textes d'historiques de parties de poker
- j'ai un donc une classe Partie qui contient des Mains
- une stratégie donnée va créer un objet Partie et ses Main(s) associées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9class Main { ... } class Partie { Main mains[]; }
- et cette stratégie va avoir besoin d'attributs spécifiquement pour elle à associer à chaque Main, ou à la Partie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10class Strategie implements IStrategie // strategy pattern { Partie partie; function Analyse() { partie = new Partie(); ... } }
- évidemment, je ne peux pas intégrer ces attributs dans les classes Main ou Partie puisqu'ils ne servent que pour une stratégie donnée (et donc pas les autres)
Ma question est donc : comment faire ? Dois-je créer des classes spécifiques à la stratégie ?
Cette solution me semble la plus évidente, mais aussi la plus lourdingue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5class MainPourStrategieA extends Main { Int x; // utile uniquement dans le cadre de la stratégie A }
D'autre part j'ai un soucis de sémantique : quels noms donner à ces classes spécifiques à des stratégies données ?
Y a t'il d'autres approches (design patterns ?), d'autres façons de voir ?
Etant un programmeur old-school et très orienté procédural, je me pose beaucoup (trop) de questions sur les approches orientées objet et la façon de concevoir propre, cohérent, logique et... beau :-)
Merci de votre aide
Antoine







Répondre avec citation




Partager