java - 双重依赖注入(inject)和良好实践

标签 java swing dependency-injection

我正在尝试用 java 编写应用程序,我想了解一些有关注入(inject)的信息。

我有一个继承自 JFrame 的 A 类:

public class A extends JFrame {

public A(CModel model){

    B classB = new B(model);
  }
}

继承自 JPanel 的 B 类:

public class B extends JPanel {

public CModel model;

public B(CModel model){

    this.model = model;
  }
}

为了将我的模型注入(inject)到我的 B 类中,我必须将它注入(inject)到我的 A 类中。 我可以这样做吗?或者这被认为是不好的做法? 我还有其他选择吗?

提前致谢

最佳答案

在您的设计中,B 类需要 CModel(好的做法是使模型成为“最终”模型)。

A 类封装 B;因此,虽然您可以先构建 B,然后将 B 注入(inject) A,但没有充分的理由这样做。创建A的用户不需要了解B。

由于 B 需要 CModel,因此 A 需要 CModel。

您所做的方式最好地描述了 A,因为构建 A 所需的唯一“状态”就是 B 所需的状态。

关于java - 双重依赖注入(inject)和良好实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48553465/

相关文章:

java - 如何将 java swing 组件大小设置为其封闭的父级大小。例如 : setting JLabel size to its enclosing JPanel size.

java - 从文件中读取按钮名称

c++ - C++ 中构造函数注入(inject)的高级配置

java - 使用 Jackson 递归构建 JSON 字符串到 jsTree

java - 如何使用 JasperReports 为单个报告传递多个结果集?

java - Swing 动画的计时

angularjs - 将 Controller 添加到 UI Router 状态时,AngularJS 中出现模块错误

javascript - 在 Ember.js 中使用需要将对象注入(inject)到其他对象中

java - Windows 保留名称 "c​on"解决方法/hack

java - 将函数作为参数传递以在 UI 线程上启动