我正在编写一个需要填充字典的博格求解器。我的方法是进行静态初始化,如下所示:
private static final Set<String> dictionayKeys = DictionaryReader.populateDictionaryWords("/../dictionary.text);
为了添加更多详细信息,博格求解器将仅使用字典键来验证是否包含单词,然后使用字典键,例如dictionaryKeys.contains(currWord)
现在问题 - 我一直在阅读有关延迟初始化的信息,并想知道鉴于所涉及的文件 IO,此示例是否是惰性初始化的理想候选者?
可能不是在这种情况下。 你不是总是需要在某个时候填充字典吗? 我宁愿在启动程序时再等一会儿,以便它可以填充字典,然后在我玩游戏时让程序似乎挂起,同时它懒惰地填充它。
我认为当延迟初始化是一项昂贵的操作并且并不总是需要数据时,最好使用延迟初始化。 例如,hibernate可能会延迟加载与实体键无关的实体对象的某些字段,因为并非实体的每个用例都需要该部分数据,只有显式请求数据的用例。