Sto pensando di utilizzare un modello di strategia per la gestione dei file di configurazione, in questo modo posso supportare alcune configurazioni legacy. Mi sento abbastanza solido sul design generale (come il suo modello di strategia piuttosto standard), ma sono curioso di sapere se il client deve conoscere il tipo di strategia che viene implementata o se viola il modello di strategia. In particolare, il costruttore di ConfigurationParser richiede un istream e una stringa (o forse enum) del tipo di flusso che è (xml, json, ini, ecc.) Per sapere quale strategia concreta istanziare.
Idealmente mi piacerebbe solo passare l'istream, ma se lo faccio allora probabilmente dovrò inserire il codice nel ConfigurationParser per discernere il tipo di stream cercando parentesi angolari o parentesi quadre o qualcosa del genere.
Ho deciso di non passare un percorso di file di stringhe e di determinare il tipo dall'estensione perché la roba legacy non è sempre coerente nella denominazione dell'estensione e rende il mio codice molto più semplice da testare se passo flussi invece di percorsi di file codificati.