所以我有类似学生和课程
这样的场景学生A注册课程1,2
学生B参加课程1,2,3
学生C注册课程2
所以有两种事件:
学生A被删除 - >需要通知两个对象:课程1和课程2
课程1被取消 - >需要通知两个对象:学生A和学生B
我知道如果每个学生只能注册1个课程,Observer模式就可以工作,在这种情况下,我有一个观察者模式中每个课程对象的学生列表。
我想知道我是否应该做一些双向观察者模式(学生保留课程列表,课程也保留学生列表)。那么处理这个问题会有好办法吗?主要关注的是速度/空间权衡(我现在最多可以想到的是从1个学生到1个课程和1个课程到1个学生的双向哈希/树)。任何指针将不胜感激!!
答案 0 :(得分:1)
你真正要问的是域模型中的级联语义。例如,如果删除课程,是否应删除学生?当然不是。如果学生被删除,是否应该删除课程?否。
我认为你可能想要考虑的是另一个课程:入学。这表示学生A在日期Y注册课程X.然后,如果课程被取消,您级联删除注册,然后当您去那个学生看他注册的内容时,您不再看到该课程。
此策略的另一个好处是,如果您想保留信息(他已注册并且课程已取消),那就是Enrollment类(这是一个Association类)。