我有两个班级:
public class CourseModule {
// attributes...
List<Course> courses;
public void addCourse() { ... }
}
public class Course {
// attributes...
CourseModule module;
}
Course
的属性不足以唯一地标识对象,始终需要课程模块,也用于添加信息。 CourseModule
由差异Courses
组成。
我不喜欢的是循环依赖,感觉不对。现在我在考虑以下内容,而不是为每个方法添加课程并手动设置CourseModule
引用,我可以使用构造函数自动执行此过程:
public Course(...,...,...., CourseModule module) {
this.module = module;
module.courses.add(this);
}
但同样,这是另一个巨大的问题:在Brian Goetz Java Concurrency in Practice中说:不要让this
引用转义构造函数
那么这里最好的做法是什么?我认为这是一个非常简单的例子,可能会产生一个样本解决方案。
答案 0 :(得分:0)
你是对的,我会说你当前的设置是Code Smell的一个例子。
您是否可以制作另一个对象CourseInfo
来管理您在Course
中无法包含的其他课程信息?
public class CourseModule {
List<Course> courses;
public void addCourse(Course course) { ... }
}
public class Course {
CourseInfo info;
}
public class CourseInfo {
CourseInfo info;
}
答案 1 :(得分:0)
我在互联网上发现this post几乎与你要做的事情完全重复,也与课程有关!我发现那里指定的解决方案并非100%正确,我的问题的答案需要考虑。