在处理 config.properties 的 Java Class 文件中避免使用静态方法和变量

Avoiding static methods and variables in a Java Class file that handles config.properties

我正在开发一个简单的 Java 应用程序,我创建了一个名为 Config.java 的 class 来处理应用程序属性,从而避免硬编码。

Config.java class 不是静态 class,我正在另一个 class 中创建 Config.java class 的实例] 称为 Serial.java.

主要方法位于另一个名为 App.java 的 Class 中。所以我总共有 3 Classes:

在这个阶段,一切都很好,OOP 设计中没有任何缺陷。但是,我需要创建另一个 class,我必须在其中调用 Config.java class 中的方法。为了只有 Config.java class:

的一个实例,最好的方法是什么?
  1. 将 Config.java class 的方法从 public 更改为静态方法?
  2. 正在为位于 Serial.java class?
  3. 中的 Config 实例创建 getter 和 setter

还有没有其他的options/techniques我可以用来实现我的目标。

非常感谢任何帮助或建议。

尽管这取决于您域的详细信息,但我看到了两个可行的替代方案:

  • 为你的App添加一个getConfig方法Class(考虑到Config是属于App的)并使用App实例作为参数实例化你的新对象class.
  • 选择单例,has many criticisms

听起来像是 dependency injection

的工作

听起来你在 Serial 中实例化 Config:

class Serial {
    private Config config = new Config();
}

与其在 Serial 中创建它,不如将其传入:

Config config = new Config();
Serial serial = new Serial(config);

Serial class 看起来像:

class Serial {
    private Config config;

    public Serial(Config config) {
        this.config = config;
    }
}

这样你也可以将它传递给必须从 Config:

调用方法的其他对象
OtherObj other = new OtherObj(config);

OtherObj定义为:

class OtherObj {
    private Config config;

    public OtherObj(Config config) {
        this.config = config;
    }
}

这很好地帮助您避免静电。