0

我想了解一些实际情况,在这些情况下我们需要使用实例变量的延迟初始化。对于所有线程都可以使用相同文件处理程序的场景,我已经将单例模式用于静态变量,但我不确定它可以实际使用的场景。

问候, 拉马坎特

4

3 回答 3

1

每当单例非常占用资源(内存、处理能力、带宽、网络端口等)时,您只想按需创建它,因为在从不需要单例的情况下,急切地初始化会浪费资源。

另一个原因:如果初始化单例的资源仅在实际需要单例时存在,它可以使您的系统更加健壮。例如,假设单例是一个打印假脱机程序。如果系统中当前没有打印机,则不值得分配一个试图连接到不存在的打印机的假脱机程序。由于用户不应该在系统中没有打印机的情况下请求打印,因此惰性假脱机程序提供了完全正确的行为而没有明确的逻辑。用户从不请求 pring,因此假脱机程序永远不会初始化,并且永远不会有失败的连接尝试。

延迟初始化有意义的潜在资源密集型单例的其他示例:记录器、独特的 SOA 服务、独特的通用网络服务、缓存管理器、负载平衡器、伪随机数流生成器、资源管理器。

于 2013-04-24T17:32:28.837 回答
0

例如,您有一个User关联了图像的实体,因此当您阅读用户时,您并不总是需要图像,因此请尝试在实际需要时延迟加载该图像

于 2013-04-24T17:31:54.680 回答
0

也许是模板库的模板抽象。模板用Strings 初始化,但仅在实际请求/运行模板时才编译为快速的内部表示。

于 2013-04-24T17:35:15.863 回答