我有一个包含以下公共方法的类:
public void setStartGameEvent(GameTypeMode gameTypeMode) {
gameTypeMode.setGameType(readIntFromConsole());
}
@Override
public void setComputerHeuristicEvent(GameTypeMode gameTypeMode) {
gameTypeMode.setComputerHeuristic(readIntFromConsole());
}
@Override
public void setBackgroundChoice(GameTypeMode gameTypeMode) {
gameTypeMode.setBackground(readIntFromConsole());
}
@Override
public void setBorderChoice(GameTypeMode gameTypeMode) {
gameTypeMode.setBorder(readIntFromConsole());
}
注释:
该类是一个代理,这就是为什么函数的输入是我们想要设置数据的地方 - 该类是一个consoleEventHandler,主类执行eventHandler.setBlah(GameTypeMode)并从中获取数据正确的输入法。
readIntFromConsole()只是从标准输入读取一个int并处理异常。
因为您可以很容易地看到所有功能完全相同,只是具有不同的设置属性。 我的问题是,如果有一种方法可以用更通用的\复杂的方式来做,比如反射或任何类似的
编辑:有关此课程的更多解释
这个课程是游戏的一部分。 游戏的输入可以来自控制台\图形显示\鼠标等。 输出(游戏本身)是根据所选的输入方法创建的。
我有一个eventHandler接口,它定义了特定输入法应该实现的所有功能,以便游戏可以工作(例如上面的函数) 这意味着我有consoleEventHandler,graphicEventHandler ......
现在对于每个属性,我需要为所有eventHandler可用实现一个set方法(可能很多),这就是为什么我要问这个关于为每个eventHandler推广set函数的问题
答案 0 :(得分:0)
你提出的任何内容都会比显示的明显,直接的代码更复杂。
在这种抽象层次上,由于这些微不足道的“重复”,成本远超过了任何好处。