我最近正在处理一些代码。这是要点 -
class Student {
private String name;
private List<Performance> performances;
}
class Performance {
private Student student;
private List<Integer> perfData;
}
学生&amp;性能具有循环依赖性。这不好吗?我们如何在不失去查找学生所有表演的能力的情况下防止/打破这种情况,并将表现地图反馈给学生。
答案 0 :(得分:1)
在做这些事情时,你应该经常问自己的问题是:在现实世界中,我的设计是否有意义?在有人跳进去纠正我之前,有些情况下设计没有映射到逻辑,有些情况下也会如此。
当我查看你的代码时,首先想到的是如何将东西存储在大学软件中。您需要了解有关学生的信息,每位学生的绩效评估以及许多其他相互关联的平台(电子邮件,注册课程等)。这意味着,对于给定的学生,有一些表演有一些数据。所以他们属于学生,所以你在那里做的很好,将学生与表演联系起来。我认为错误的是你可能在某个地方使用该表演,而你不应该将其映射回学生。没有更大的图片留下了解释的空间。
现在,你可以做些什么来解耦系统,如果我们想象一个更大的图片就是为学生分配一个id。
class Student {
private String name;
private String address;
private String city;
private String nationality;
private Data dob;
private long studentId;
}
class Performance {
private long studentId;
private List<Integer> perfData;
}
class PerformanceManager{
private List<Performance> performances;
public List<Performance> getPerformanceForId(long id);
}
class MailItem{
private String to;
private String message;
private long studentId;
}
class MailManager{
private List<MailItem> mails;
private List<MailItem> getMailForId(long id);
}
当然,上面的例子只是一个简化,但我们的想法是,彼此无关的系统(性能和邮件)通过id链接,而不是通过引用链接。