1

だから私はクラスの学生とコースでこのようなシナリオを持っています

学生Aはコース1、2に在籍

学生Bはコース1、2、3に在籍

学生Cはコース2に在籍しています

したがって、次の 2 種類のイベントがあります。

生徒 A が削除されます -> 2 つのオブジェクトを通知する必要があります: コース 1 とコース 2

コース 1 がキャンセルされました -> 2 つのオブジェクトを通知する必要があります: 学生 A と学生 B

各学生が 1 つのコースにのみ登録できる場合、オブザーバー パターンが機能することを知っています。この場合、オブザーバー パターンの各コース オブジェクトの学生のリストがあります。

双方向のオブザーバーパターンを実行する必要があるかどうか疑問に思っています(学生はコースのリストを保持し、コースは学生のリストも保持します)。それで、この問題に対処する良い方法でしょうか?主な関心事は、速度/スペースのトレードオフです (私が今考えられるのは、せいぜい 1 人の学生から 1 セットのコースへ、1 コースから 1 セットの学生への双方向のハッシュ/ツリーです)。どんなポインタでも大歓迎です!!

4

1 に答える 1

2

あなたが本当に求めているのは、ドメイン モデルにおけるカスケード セマンティクスです。たとえば、コースが削除された場合、学生を削除する必要がありますか? もちろん違います。生徒が削除された場合、コースを削除する必要がありますか? いいえ。

あなたが考慮したいのは別のクラスだと思います:登録。これは、学生 A が日付 Y にコース X に登録したことを意味します。次に、コースがキャンセルされた場合、登録をカスケード削除し、その学生に行って登録内容を確認すると、そのコースは表示されなくなります。

この戦略の追加の利点は、(彼が登録され、コースがキャンセルされたという) 情報を保持したい場合、それが登録クラス (関連クラス) にあることです。

于 2013-01-30T01:24:33.047 に答える