java - 如何对这两个耦合类应用解耦

标签 java oop circular-dependency

我有两门课:

public class CourseModule {

  // attributes...

  List<Course> courses;

  public void addCourse() { ... }
}

public class Course {

  // attributes...

  CourseModule module;
}

Course 的属性不足以唯一地标识一个对象,类(class)模块始终是必需的,对于附加信息也是如此。 CourseModule 由不同的类(class)组成。

我不喜欢这里的是循环依赖,感觉不对。现在我正在考虑以下内容,我可以使用构造函数自动执行此过程,而不是为每个方法添加类(class)并手动设置 CourseModule 引用:

public Course(...,...,...., CourseModule module) {

   this.module = module;
   module.courses.add(this);
}

但是,这里还有另一个大问题:Brian Goetz Java Concurrency in Practice 中说:不要让 this 引用逃逸构造函数

那么这里的最佳实践是什么?我认为这是一个非常简单的示例,可能会产生示例解决方案。

最佳答案

有趣的是,我不得不做类似的事情。请参阅my question here .

我找到了this post在互联网上,这几乎与您想要做的事情完全相同,还有类(class)!我发现那里指定的解决方案并不是100%正确,我的问题的答案需要考虑。

关于java - 如何对这两个耦合类应用解耦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460023/

相关文章:

java - 恢复丢失的类型同时避免 'unchecked cast' 警告

java - 鼠标点击java

java - 在Java中以微秒分辨率测量时间的最有效、 "cheap"和最准确的方法是什么?

java - 对Matcher类的asBoolean方法的误解

objective-c - 在 Objective-C 中维护表示不变量

python 导入循环依赖(也许还有函数声明)

delphi - 为什么要在类中使用属​​性?

javascript - this.constructor.SomeVarible 与 OOP JS 中的 this.SomeVarible

python - python循环导入是一个实现细节吗?

android - 如何去除 Dagger Hilt 依赖注入(inject)周期