我有一个抽象类可以用作我的程序的模板。这个抽象类有一个构造函数,它当前接受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
}