Domanda

Sto cercando di capire il modello di strategia E chiedermi: la classe di contesto è indispensabile o posso lasciarla senza compromettere lo scopo del modello?

Avevo l'impressione che avevo bisogno di una sorta di switch per leggere diversi tipi di file, ma non volevo solo hackerare qualcosa e in seguito gestire il refactoring (anche se, ovviamente, accade sempre che il codice possa essere refactord ma l'idea era: prova Essere il più intelligente possibile nel design in anticipo ...):

enter image description here

Immagine prelevata da Wikimedia

Il cliente può delegare direttamente all'interfaccia strategica o c'è qualcosa che mi è appena perso per capire sulla classe di contesto?

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();
    }
}

Quindi, sopra raffigurato è la classe di contesto mancante. Il codice aderisce al modello di strategia?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top