am I going down an inherintly bad path
Tôi nghĩ trong ví dụ thứ hai của bạn (các lớp con worker) bạn chắc chắn là như vậy. Bạn đã ánh xạ mỗi lớp con đến một trạng thái cụ thể trong siêu lớp. Vì vậy, bây giờ mỗi lần bạn muốn thêm một trạng thái vào siêu lớp, bạn sẽ cần thực hiện thay đổi ở ba vị trí (thêm trạng thái vào siêu lớp, thêm một lớp con mới và thay đổi hàm tạo của lớp dẫn xuất để thêm lớp phụ vào danh sách ).
Việc sử dụng các lớp lồng nhau để truy cập các thành viên tư nhân dường như là một cách sử dụng hợp lệ (tôi chưa bao giờ tự mình thực hiện nó) nhưng trường hợp cụ thể của bạn không hoạt động ở đây.
Đối với ví dụ về phần cơ thể. Bởi vì tất cả các lớp lồng nhau là công khai, bạn không thực sự làm gì nhiều ngoài việc đặt tên. Nếu các lớp này phát triển để bao gồm nhiều chức năng hơn, bạn có thể thấy rằng các lớp lồng nhau chỉ làm lộn xộn các giao diện và bạn đang lọc qua mã để tìm thứ gì đó cụ thể. Tôi cũng nhận thấy rằng vì bạn có các lớp lồng nhau, bạn buộc phải phá vỡ các quy ước đặt tên và đặt tên cho các lớp của bạn với chữ thường (có thể đây là một lựa chọn). Nhưng những lập luận này hời hợt hơn bất cứ điều gì thực sự sai.
Trừ khi, tất nhiên, bạn cần phải thực hiện một cánh tay bị biến dạng. Sau đó, tạo ra một cánh tay bằng cách làm như sau là khó hiểu vì không có cơ thể / thân / bên. (Cũng chú ý vỏ bọc khó hiểu).
arm newArm = new Body.torso.side.arm("");