Volevo solo far riflettere i gruppi su come gestire i dettagli di configurazione delle entità.Impostazioni a livello di app in DDD?
Quello che sto pensando in particolare sono le impostazioni di alto livello che potrebbero essere modificate dall'amministratore. il tipo di cosa che potresti archiviare nell'app o web.config in definitiva, ma dalla prospettiva DDD dovrebbe essere impostato in qualche punto degli oggetti in modo esplicito.
Per ragioni, prendiamo come esempio un CMS basato sul Web o un'app blog.
una data entità blog voce ha un numero qualsiasi di impostazioni dell'istanza come Autore, Contento, ecc
Ma si potrebbe anche voler impostare (per esempio) di default Descrizione o Le parole chiave che tutte le voci del sito dovrebbe iniziare con se non sono cambiati dall'autore. Certo, potresti semplicemente inserire quelle costanti nella classe, ma il proprietario del sito non può modificare le impostazioni predefinite.
Così i miei pensieri sono i seguenti:
1) utilizzare la classe di livello (statici) di immobili da rappresentare quelle impostazioni, e quindi impostare quando l'applicazione si avvia, sia impostandole dal DB o dal web .config.
o
2) utilizzare un'entità separata per lo svolgimento delle impostazioni, eventualmente, un dizionario, o utilizzarlo direttamente o abbiano in essere un membro della classe Entry
Quello che tutto colpisce come il più facile/flessibile? La mia preoccupazione per la prima è che non mi sembra molto inseribile (se finisco per voler aggiungere più funzionalità) poiché cambiare i metodi di classe di un'entità mi farebbe cambiare anche l'app stessa (che sembra una violazione dell'OCP). Il secondo sembra più pesante, soprattutto se poi devo gettare o analizzare i valori da un dizionario.
I valori predefiniti erano un esempio, forse uno scarso; Conosco il modello Factory. Un altro esempio potrebbe essere qualcosa che dovrebbe applicarsi a tutte le istanze di una classe, ma che può cambiare a livello di app. Forse qualcosa come il numero di istanze da caricare in un elenco (sempre) o una regola sull'opportunità o meno di mostrare i commenti. Questi non mi colpiscono davvero come valori a livello di istanza, o sto fraintendendo qualcosa? – Paul
È sempre possibile incapsulare uno o più valori correlati in un tipo e quindi iniettare un'istanza di quel tipo in tutti i consumatori. Per motivi di efficienza (o qualsiasi altra ragione) puoi scegliere di iniettare una singola istanza condivisa mentre i consumatori non hanno idea della durata dell'oggetto iniettato. Ciò manterrà le tue opzioni aperte. –