E 'ancora considerata un'implementazione del modello di strategia?

0

Nel mio progetto ho diversi tipi di entità.
Ottengo i dati per queste entità in file di testo da una terza parte.
Ho scritto una classe per leggere e analizzare questi file di testo, usando il modello di strategia.
Il metodo in questa classe deve restituire diversi tipi di entità, quindi ho reso l'intera classe generica, qualcosa del genere:

public class Parser<T>
{
    public IStrategy<T> strategy { get;set;}

    public IEnumerable<T> LoadFromFile()
    { 
        // implementation details, not interesting
    }
}

Ma il problema è che ora ho bisogno di una nuova istanza di Parser per ogni entità che carico, quindi ho cambiato la mia implementazione iniziale in questo:

public class Parser
{
    public IEnumerable<T> LoadFromFile(IStrategy<T> strategy)
    {
        // implementation details, not interesting
    }
}

Quindi, questo è ancora considerato come un'implementazione del modello di strategia?

Se no, c'è un modo in cui potrei restituire IEnumerable<T> senza dover specificare che tipo T è effettivamente ovunque ma in IStrategy<T> ?

    
posta Zohar Peled 13.02.2018 - 17:47
fonte

1 risposta

1

Signore, stai ancora utilizzando lo schema della strategia in modo meno esplicito. Tuttavia, il tuo codice dopo il cambiamento non riflette pienamente questo. Dovresti presentare l'interfaccia di IStrategy per completezza.

Tuttavia la linea principale del mio pensiero è piuttosto così: i modelli non sono progetti, sono piuttosto un'impalcatura intellettuale che più è modificata per l'uso concreto meglio è compresa e afferrata.

    
risposta data 13.02.2018 - 19:06
fonte

Leggi altre domande sui tag