循環参照を解決するクラス設計を検討したい
ソフトウェア設計についての質問です。
現在考えているクラス構造が下記のような感じです
→で「1対多」のつもりです。
Managerが全体統括としてStudentやTeacherのメソッドを呼んでいく、という構造ですが、Teacherが教え子のStudentを取得するというときに循環参照が起きてしまいます。
というのは、3つの方針を思いついたのですが、
TeachingクラスがもしTeacherインスタンスやStudentインスタンスを持てばその間で循環参照。
TeachingクラスがTeacherやStudentのID値のみを持っていたとしても(これはこれで更新時異状が起きてダメですけど)、対応するStudentを探すべくTeacherがManagerに問い合わせをし、そこで循環参照。
TeacherがTeachingに対応するStudentを持つ場合(冗長ですが)、StudentがTeacherを取得しようとすると循環参照。
という問題で行き詰まっています。
クラス構造を改善することで解決したいのですが、いいアイデアはありますでしょうか?
クラス設計の勉強として取り組んでいるため、あまり「弱い参照」を使わないようにしたいです。

