伪代码
提供的片段将被视为伪代码.如果有一个不同的解决方案是解决这个问题的标准方法,我愿意接受.
这与预期用量有关:
一些澄清:
每个应用程序将使用一个且仅一个配置.它不会在运行时更改.
Main.java
不能允许@Override
.
Configuration.java
不能是一个Interface
默认值应该给不被覆盖的字段.
Configuration.java
将从其目前的两个领域大幅增长.渲染构建器模式非常混乱.
Configuration.java
public class Configuration { public static int getFoo () { return 1; } public static int getBar () { return 2; } }
UserDefinedConfiguration.java
public class UserDefinedConfiguration extends Configuration { @Override public static int getFoo () { return 3; } }
Main.java
public final class Main { private final Configuration config; // default configuration public Main () { this (Configuration.class); } // user-defined configuration public Main (Class extends Configuration> config) { this.config = config; } // dummy-test public void printFoo () { System.out.println(config.getFoo()); } }
现在回答主要问题,如何实现这一目标?如果没有(或被Configuration
传递)getFoo()
应该返回1
,如果UserDefinedConfiguration
传递那么3
.
实现它的一种方法是存储一个实例Configuration
.然而,当所有吸气剂都是时,感觉多余static
.没有它们也没有多大意义static
.
注意:这被考虑在内.