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