Questa è una domanda basata sul design. Non sono libero di discutere il caso reale con cui ho a che fare, ma l'esempio che fornisco è rappresentativo del problema reale.
Sfondo
Diciamo che stiamo creando libri con finali diversi in base al modo in cui qualcuno progredisce attraverso il libro. Per semplicità, il nostro sistema genera una storia completa senza alcuna scelta per l'utente effettivo da scegliere, creando in effetti un libro normale. Dal punto di vista dell'utente finale, il libro non ha scelte.
Quando vogliamo generare un libro che l'utente possa leggere, un libro con le scelte viene "reso" dal sistema navigando attraverso le scelte nel libro e selezionando casualmente una delle scelte in ciascun ramo. Vogliamo memorizzare questa versione renderizzata affinché l'utente possa tornare in futuro, se lo desidera.
Il problema
La mia soluzione attuale è creare due gerarchie parallele, una per la versione originale e una per la versione renderizzata. Questo ci permette di mantenere la versione originale, quella che può essere resa di nuovo per un altro utente (o lo stesso utente se vuole vedere una versione diversa), e mantenere un record delle versioni generate per un utente specifico.
Sebbene questa soluzione sembri appropriata considerando le circostanze, mi chiedo se ci sia una soluzione migliore o un modello di progettazione che possa essere applicato qui. Le gerarchie parallele introducono un accoppiamento che sembra inevitabile, ma sarei interessato ad ascoltare altre prospettive.
Penso di aver coperto le basi del mio scenario, se hai bisogno di ulteriori dettagli, basta chiedere.