for循环中的不同代码

时间:2010-08-30 00:11:21

标签: java optimization

我为我正在开发的游戏创建了一个相当复杂的(Java)代码。我相当确定将来需要改变它以优化或以其他方式改变确切的功能。该代码能够有效地循环遍历游戏实体的子集。

问题在于,在循环遍历此子集时,应执行不同的代码。例如:

  • 应该返回第一个找到的游戏实体
  • 当游戏实体符合某个标准(可能的几个标准)时,将返回一个布尔值。

    有几种简单的解决方案可能:

  • 复制代码一次,在每个副本中更改负责特定需求的代码。我不想这样做,因为代码的未来变化必须在三个不同的时间更新。除此之外,它会造成不必要的混乱。但是,它似乎确实是最有效“代码”的解决方案。
  • 使用if语句检查它需要什么特定需求。我不喜欢这样做,因为它导致代码检查不必要的东西。
  • 在循环子集时构建游戏实体的集合,然后为满足特定需求的方法提供此集合。我不喜欢这样做,因为代码构建了不需要构建的东西。我赞成这个解决方案。

    可以看出,需要高效且易于管理的代码。 Java编程语言是否还有其他解决方案?我更愿意为处理特定需求的方法提供某种指针的代码,但我不知道Java中是如何实现的。

    除了希望得到一个简洁的解决方案之外,我问这个因为我想学习Java内外的每一个问题!谢谢你的回答!

    干杯, 装甲

  • 3 个答案:

    答案 0 :(得分:3)

    使用循环代码调用的方法声明一个接口,然后根据您的需要为接口的不同实现提供循环代码。

    这通常被称为Template Method Pattern

    答案 1 :(得分:0)

    我不确定这是否是你的问题的解决方案,但是如果你有一个抽象类做循环实体的基本工作,然后让类扩展抽象类,然后这些子类将做更具体的事情。然后,运行时,您可以根据(用户的?)特定需求提供抽象类类型实际类的变量。

    答案 2 :(得分:0)

    您可能首先想要将游戏实体划分为不同的类,以便每个类/实体包含自己的代码并知道如何自行处理它。见http://en.wikipedia.org/wiki/Factory_method_pattern

    不是使用if / switch语句来确定使用Reflection可以查看的权限。或者更进一步,使用一些IoC容器,如http://www.springframework.net/,这将是一个步骤学习曲线,现在可能有点过头了。但绝对值得阅读和了解更多。