将值传递给超级构造函数以确定要启用的模块

时间:2014-05-01 15:43:24

标签: java inheritance annotations super

我有一个抽象类可以用作我的程序的模板。这个抽象类有一个构造函数,它当前接受7个布尔值,每个布尔值定义是否使用某个模块并且应该被启用(构造)。我没有将7个布尔值传递给这个超级构造函数,而是考虑传递一个字符串列表或一个与要启用的模块匹配的字符串。这似乎是我想要的一个糟糕的解决方法,因为它需要记忆模块代码(它们将在javadocs中,但仍然不是我的偏好)。我的下一步想法是为要启用的每个模块使用注释。每个模块都有一个与之关联的注释,超级构造函数将读取子类注释以确定要启用的内容。有没有适当或优雅的方式来做这个模块系统?我觉得所有这些系统都不是最佳的。

超级课程:

public Template(boolean commands, boolean config, boolean listeners, boolean logging, boolean permissions, boolean reflection, boolean threads) {
    this.commandManager = commands ? new CommandManager(this) : null;
    this.configManager = config ? new ConfigManager(this) : null;
    /*...*/
}

public CommandManager getCommandManager() {
    return this.commandManager;
}

使用命令和权限的子类(注释中显示的备用调用)

public SubTemplate() {
    super(true, false, false, false, true, false, false);
    //super({"commands", "permissions"});
    //super("Cp"); C being commands, p being permissions
}

0 个答案:

没有答案