Ho lavorato a un progetto che si occupa di semplificare, Scuole e Studenti.
Il requisito generale è che alcuni studenti possano essere assegnati a determinate scuole per svolgere uno stage.
Ma le scuole non sono solo scuole di per sé, quelle possono essere ospedali, carceri, case di cura, ecc.
Dato che sto usando un ORM e classi Entity, la mia prima idea era di usare il mapping di ereditarietà, come, per avere un genitore di classe StageProvider con particolari classi figlio ...
Tuttavia, un altro requisito è che questo dovrebbe essere fatto in modo che qualsiasi Utente in futuro possa aggiungere la nuova istanza di InternshipProvider usando un modulo AND allo stesso tempo per poter aggiungere alcune proprietà specifiche. A volte alla classe, e talvolta solo a un'istanza particolare.
Per ogni istanza, il InternshipProvider può avere o meno, un insieme di proprietà specifiche, che potrebbero essere disponibili su un modulo come campi di testo o opzioni di scelta, o una sottomaschera, ecc.
Quindi l'ho risolto in questo modo: esiste la classe InternshipProvider, tra le proprietà standard ha anche una lunga proprietà di testo. E all'interno di quella proprietà di testo (campo) sono presenti coppie chiave-valore JSON, che descrivono quei campi e valori specifici memorizzati.
C'è anche un "mostro", la funzione di generatore di moduli personalizzati, che gestisce questo abbastanza bene. Ad ogni istanza di InternshipProvider è assegnato un modulo personalizzato specifico per la modifica futura.
Ci sono due ragioni per questi requisiti:
- Vogliono eliminare la necessità di assumere uno sviluppatore di software in futuro.
- Il dominio È complesso e imprevedibile.
Hai un'idea migliore? C'è qualche concetto che copre questo? Qualche modello di progettazione o simili? Cosa diresti al Cliente?
Grazie