假设我有一个TeacherRepository需要根据下面的代码使用CourseRepository。老师和课程形成了多对多的关系。教师和课程不构成聚合。你会考虑正确使用这种模式吗?
class TeacherRepository {
@Inject(@Named("courseRepository"))
private final CourseRepository courseRepository;
public void addCourseToTeachers(String courseName) {
Course course = courseRepository.findByName(courseName);
for (Teacher teacher : readAll())
teacher.addCourse(course);
}
}
答案 0 :(得分:4)
我认为处理课程不是TeacherRepository
的任务。恕我直言,最好在一个单独的课堂上处理这个问题。最好对每个班级承担一项责任。
但如果您绝对想要将此功能添加到TeacherRepository
,则可以在不依赖CourseRepository
的情况下执行此操作:
class TeacherRepository {
public void addCourseToTeachers(Course course) {
for (Teacher teacher : readAll())
teacher.addCourse(course);
}
}
...
CourseRepository courseRepository = ...;
TeacherRepository teacherRepository = ...;
...
Course course = courseRepository.findByName(courseName);
if (course != null)
teacherRepository.addCourseToTeachers(course);
答案 1 :(得分:0)
我在项目上做了类似的事情,我没有看到你的方法中的问题(并不一定认为它与发布答案的其他人的观点相矛盾。)
如果我有一个聚合根(教师)作为其聚合的一部分引用另一个聚合(课程),我认为该方法是有效的,原因如下:
我没有在这里看到这个问题,虽然我可以通过我正在开展的项目获得更好的理解!!
JLove