Il nostro dominio viene gestito in determinati contesti. Questo contesto è descritto da alcuni valori aggiuntivi, come un fooId
- id che non ha significato nel dominio business, ma è più un sapore per l'intera applicazione e moduli.
Ho bisogno di memorizzare questo fooId
con entità, come Book
. Ma non voglio che Book
abbia questo id nella classe, poiché il numero di flag dipende dal contesto. Questi flag sono disponibili nel repository, quindi sono in grado di memorizzarli nel db.
Come modellare questo?
Posso avere una factory per Book
che in realtà crei un'implementazione Book
con tutti i campi aggiuntivi. Il repository funzionerebbe solo con queste implementazioni. L'utente non è a conoscenza dei campi aggiuntivi. Ma ha sempre bisogno di chiamare la fabbrica se vuole creare l'oggetto.
Come ti senti? Non vedo nessun altro modo per farlo, e ancora per non avere Book
a conoscenza di flag aggiuntivi.
I flag aggiuntivi fooId
di cui sto parlando potrebbero essere ad es. %codice%. Possiamo dire che il nostro software è suddiviso in moduli, e ogni modulo può creare i suoi artefatti (come i libri) nel proprio gruppo. Tuttavia, il gruppo è "flavor" del repository - i servizi e il modello non dovrebbero essere a conoscenza dei gruppi, poiché possiamo avere un repository monogruppo, in cui tutto è memorizzato in un singolo gruppo.