Dire che ho diversi tipi di operazioni che ho bisogno di eseguire. Ho una classe astratta 'BaseOperation' che ha tutte le informazioni comuni a tutte le operazioni. Ora ho bisogno di categorizzare queste operazioni sulla base di un attributo e quindi categorizzare ulteriormente ogni operazione in ogni categoria sulla base di qualche altro attributo, come mostrato nella figura sottostante. L'obiettivo è di registrare il tipo di operazione e il sottotipo per dare priorità all'indagine in caso di eventuali errori.
Il modo in cui ho pensato di farlo è: posso avere due enumerazioni corrispondenti a tipo e sottotipo in 'BaseOperation'. Posso definire un ulteriore livello di classi astratte che derivano dalla base che imposta il tipo di operazione e che fa derivare alla classe il loro tipo. Il sottotipo per ogni operazione può essere impostato per l'operazione singolarmente.
Non sono sicuro che questa sia la cosa migliore da fare e se c'è qualche modello di progettazione che posso seguire per questo scenario (non sono riuscito a trovarne ancora). Inoltre ho bisogno che questo design sia estensibile, diciamo che voglio aggiungere un altro attributo per ogni operazione (che posso facilmente fare sopra aggiungendo un altro enum in base e impostandolo di nuovo per ogni operazione).