am I going down an inherintly bad path
Penso che nel tuo secondo esempio (le sottoclassi di worker) lo sei sicuramente. Hai mappato ciascuna sottoclasse in uno stato specifico nella super classe. Così ora ogni volta che vuoi aggiungere uno stato alla super classe devi cambiare le posizioni tre (aggiungi lo stato alla super classe, aggiungi una nuova sottoclasse e cambia il costruttore di derivato classe per aggiungere sottoclassi alla lista).
L'uso di classi nidificate per accedere ai membri privati sembra essere un uso valido (non l'ho mai fatto personalmente) ma il tuo caso specifico non funziona qui.
Come per l'esempio di parte del corpo. Poiché tutte le classi nidificate sono pubbliche, in realtà non stai facendo molto eccetto il namespacing. Se queste classi crescono per includere più funzionalità, potresti semplicemente scoprire che le classi nidificate ingombrano solo le interfacce e stai setacciando il codice per trovare qualcosa di specifico. Ho notato anche che, poiché hai classi annidate, sei costretto a violare le convenzioni sui nomi e dare un nome alle tue classi con lettere minuscole (forse questa era una scelta). Ma questi argomenti sono più superficiali di qualsiasi cosa veramente sbagliata.
A meno che, naturalmente, non fosse necessario implementare un braccio disincarnato. Quindi creare un braccio facendo quanto segue è fonte di confusione perché non c'è corpo / busto / lato. (Notare anche l'involucro confuso).
arm newArm = new Body.torso.side.arm("");