Che design pattern può essere applicato alle impostazioni di configurazione del problema?

In grandi e complessi prodotti software di gestione di impostazioni configurabili diventa un grande dolore. Due approcci che ho visto al problema sono:

  • dispone di ogni componente del sistema di carico della propria configurazione dal file di configurazione o impostazioni del registro di sistema.
  • hanno impostazioni di classe loader che carica tutti i configurabile con impostazioni di sistema e ogni componente di query le impostazioni loader per le sue impostazioni.

Questi approcci sentire sia sbagliato per me.

Ci sono modelli di progettazione che potrebbe essere utilizzato per semplificare il problema? Forse qualcosa che avrebbe approfittato della dipendenza tecnica di iniezione.

  • Perché pensi che l’opzione 2 è di sbagliato?
  • Di solito è implementato come un singleton, anche se ci sono altri modi per attuarlo.
InformationsquelleAutor paxos1977 | 2009-08-22



4 Replies
  1. 43

    Preferisco creare un’interfaccia per l’impostazione della query, il caricamento e il salvataggio. Utilizzando la dependency injection, posso iniettare questo in ogni componente che richiede.

    Questo permette una maggiore flessibilità in termini di sostituzione della strategia di configurazione, e fornisce una base comune per tutto ciò che di lavorare da. Io preferisco questo ad un unico, globale “impostazioni loader” (l’opzione 2), soprattutto dal momento che non posso ignorare il meccanismo di configurazione per un singolo componente, se ho assolutamente bisogno di farlo.

    • ciao,sarebbe bello se u condividere alcuni esempi 🙂
  2. 18

    Io attualmente lavoro in un sistema in cui la configurazione è gestita da una società globale di oggetto singleton, che si mantiene in una mappa di le chiavi di configurazione di valori. In generale, vorrei che non fosse stato fatto in questo modo perché può causare la concorrenza colli di bottiglia del sistema e sciatta per i test di unità, ecc.

    Penso Reed Copsey ha il diritto di farlo (ho votato lui), ma mi sarebbe sicuramente raccomandare la lettura di Martin Fowler articolo grande iniezione di dipendenza:

    http://martinfowler.com/articles/injection.html

    Un leggero addendum troppo…se vuoi fare un mock object di tipo unit test, l’iniezione di dipendenza è sicuramente la strada da percorrere.

    • Sembra che il decoratore di soddisfare le vostre esigenze. È possibile creare un Serializable decoratore che sarà in grado di fare classi serializzabili, a modo loro. La strategia può essere utilizzata per effettuare tutti gli oggetti hanno una loro strategia per la serializzazione. Gli oggetti che non devono essere serializzati possibile utilizzare ignora strategia. Coloro che hanno solo bisogno di serializzare i loro campi OnlyFields strategia e così via. Sill be flexible with adding new things to your config. Sure as all approaches this have its pro e i contro.
  3. 4

    Come questo. Si definisce un’interfaccia Configurabile con un singolo metodo configure(configurazione). La configurazione argomento è semplicemente una tabella che associa i nomi dei parametri di configurazione con i loro valori.

    Radice oggetti è possibile creare una configurazione hashtable in qualsiasi modo si desidera (es: lettura da un file di configurazione). Questa tabella può contenere parametri di configurazione per l’oggetto principale iselft, oltre a qualsiasi parametro che uno dei suoi componenti e sub-componenti, sub-sub-componenti (ecc) potrebbe utilizzare.

    L’oggetto principale quindi richiama configure(configurazione) su tutte le sue componenti configurabili.

  4. 0

    È possibile creare più implementazione di un’interfaccia che definisce la config loader. Fondamentalmente modello di strategia in cui è possibile definire una interfaccia di base come configLoader e poi più diverse implementazioni come FileSystemLoader, ClasspathLoader, EnvVariablesLoader etc.
    I dettagli a questo link

Lascia un commento