am I going down an inherintly bad path
2番目の例(workerサブクラス)では間違いなくそうです。各サブクラスをスーパークラスの特定の状態にマップしました。したがって、スーパークラスに状態を追加するたびに、3つの場所で状態を変更する必要があります(スーパークラスに状態を追加し、新しいサブクラスを追加し、派生クラスのコンストラクターを変更してサブクラスをリストに追加します) )。
ネストされたクラスを使用してプライベートメンバーにアクセスすることは有効であるように見えますが(私が個人的に行ったことはありません)、ここでは特定のケースが機能しません。
ボディパーツ例も。ネストされたクラスはすべてパブリックであるため、名前空間を除いて実際には多くのことを行っていません。これらのクラスが成長してより多くの機能が含まれるようになった場合、ネストされたクラスがインターフェイスを乱雑にして、特定の何かを見つけるためにコードをふるいにかけることがわかります。また、ネストされたクラスがあるため、命名規則に違反し、クラスに小文字で名前を付ける必要があることにも気づきました(おそらくこれが選択でした)。しかし、これらの議論は実際に間違っていることよりも表面的なものです。
もちろん、具体化されていないアームを実装する必要がある場合を除きます。次に、ボディ/胴体/側面がないため、次のように腕を作成すると混乱を招きます。(紛らわしいケースにも注意してください)。
arm newArm = new Body.torso.side.arm("");