在我的项目中,我想将脚本中的大量函数加载到集合中以保存它们并在以后(可能多次)执行它们而无需再次阅读脚本。我需要尽可能快地访问这些功能,并考虑了两种方法:
命令模式:我的第一个想法是将脚本命令作为对象(命令模式)存储在集合中,并在我需要执行脚本时在 for-each 循环中执行所有这些命令。虽然代码会更容易阅读,但我认为通过对象访问所有不同的命令会消耗大量的性能和内存。
for (Command command : commandList) { command.execute();
chars 和 Switch Case 的集合:我的第二个想法是将 char 或 int 等原始变量存储到集合中,并将 switch-case 构造放入 for-each-loop 中。我会使用原语,因为我认为它比字符串对象更快。因此我会使用像 Trove 这样的库。我认为这种方式可能比命令模式更快,因为不必访问命令对象。此外,将占用更少的内存。另一方面,我认为它可能会更慢,因为命令模式可以直接访问正确的函数,而 switch-case 构造必须多次检查 char 是否为 a、b、c、d 等等。
for (char command : commandList) { switch(command){ case 'a': doA(); break; case 'b': doB(); break; case 'c': ... } }
你认为一种方法更好吗?你知道另一种方法吗?你会推荐哪种类型的收藏?