Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    Intégration de classes externes dans un strategy pattern
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Main
    {
        ...
    }
    class Partie
    {
        Main 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
    9
    10
    class Strategie implements IStrategie // strategy pattern
    {
        Partie partie;
        function Analyse()
        {
            partie = new Partie();
            ...
        }
    }
    - et cette stratégie va avoir besoin d'attributs spécifiquement pour elle à associer à chaque Main, ou à la 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 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class MainPourStrategieA extends Main
    {
        Int x; // utile uniquement dans le cadre de la stratégie A
    }
    Cette solution me semble la plus évidente, mais aussi la plus lourdingue.
    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

  2. #2
    Expert confirmé
    Je trouve étrange que tu ais besoin de mémoriser dans un objet partie des informations spécifiques à une stratégie. Pourquoi ne pas stocker ces informations dans l'objet stratégie justement ???
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

###raw>template_hook.ano_emploi###