Stiamo lavorando su un sistema di bugtracking.
Il nostro design ha una classe BugReport che rappresenta l'archiviazione di un bug di alcuni progetti nel sistema. BugReports ha tag, che rappresentano lo stato / l'avanzamento del BugReport. I possibili tag sono ad es. Nuovo, Chiuso, Duplicato, In revisione, ...
I tag non hanno alcuna responsabilità oltre a rappresentare l'avanzamento del BugReport. Tranne per un tipo speciale di tag, Duplica. Duplicato significa che BugReport è in realtà un duplicato di un altro BugReport nel sistema. Quando un utente etichetta un BugReport come duplicato, deve indicare di quale BugReport il BugReport è un duplicato di.
Ho problemi a progettare questa parte. Come detto prima, la maggior parte dei tag ha solo la funzionalità di rappresentare l'avanzamento del BugReport. Tranne uno (forse più in futuro) che ha anche la funzionalità per indicare un altro BugReport.
Un enum semplice sarebbe stato sufficiente se non fosse stato per la parte duplicata, ma non ho idea di come fornire la funzionalità extra di Duplicato?