Question

J'essaye de comprendre le modèle de stratégie Et me demander: la classe de contexte est-elle indispensable ou puis-je la laisser de côté sans compromettre le but du modèle?

J'avais l'impression où j'avais besoin d'une sorte de changement pour lire différents types de fichiers, mais je ne voulais pas simplement pirater quelque chose et faire face à la refactorisation (bien que, bien sûr, il arrive toujours que le code puisse être refactorisé, mais l'idée était: essayez être aussi intelligent que possible dans la conception au préalable ...):

enter image description here

Image tirée de wikimedia

Le client peut-il déléguer directement à l'interface de stratégie ou y a-t-il quelque chose que j'ai juste manqué pour comprendre la classe de contexte?

interface Reader {
    // read information from file and fill data list field of Client
    readFile();
}
class ExcelReader implements Reader{ /* */ }
class PdfReader implements Reader{ /* */}

class Client{
    // strategic choice
    Reader r;

    // data list field
    List<Data> data;

    // Client Constructor
    public Client(){
        if(<file ends in .xls>)
            r = new ExcelReader();
        else
            r = new PdfReader();
        r.readFile();
    }
}

Ainsi, ci-dessus illustré est la classe de contexte manquante. Le code adhère-t-il au modèle de stratégie?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top