Cercherò di renderlo il più conciso e concreto possibile, ma mi scuso perché posso pensare a più modi per farlo funzionare. Questa domanda potrebbe riguardare anche la gestione dei flussi di lavoro di produzione o di produzione, ma non ho esperienza in questi settori.
Ho un problema in cui ho bisogno di spostare un oggetto, O, da stati diversi ad altri stati (come un automa finito non deterministico). Il problema è che l'oggetto può essere in diversi stati allo stesso tempo e l'interazione a volte conta.
Ad esempio, diciamo che ci sono 10 stati, O può essere in un massimo di 3 di questi stati allo stesso tempo. Sono un po 'perso su quale tipo di progettazione del codice dovrei usare per modellarlo. Le due idee a cui sto pensando sono
-
Passa O dal gestore al gestore e gestisci le transizioni tra gli stati e mantieni una sorta di informazioni in O dicendo in che stato sono, in modo che ogni stato possa capire cosa fare in base a quali altri stati O è in.
-
Avere una Superclasse più grande che gestisce gli stati in cui si trova O e gestisce le interazioni.
Normalmente direi 1. ma gestire tutte le interazioni tra i gestori di ciascun gestore suona disordinato.
Quale sarebbe l'opzione migliore tra questi 2? O c'è un altro metodo che è preferito?
** Aggiornamento e chiarimento **
Come esempio concreto. L'oggetto può trovarsi in una delle molte posizioni fisiche, mentre può anche essere in una delle diverse fasi di elaborazione (l'oggetto potrebbe spostarsi avanti e indietro tra le posizioni o avanti e indietro tra le fasi di elaborazione). Come complessità aggiuntiva ogni posizione fisica potrebbe avere delle sublocazioni, ma penso di poterlo ignorare per ora. Quindi, se è più chiaro, può essere considerato come due automi indipendenti, ma la scelta del bordo per passare allo stato successivo in entrambi gli automi dipende dallo stato di entrambi gli automi.