在PropertyResourceBundles中引入继承 - 编程入门网
onshipLoader 中用关系文件初始化父束
在PropertyResourceBundles中引入继承(5)时间:2011-02-06 Eric A. Olson新类:InheritedBundleManager 最后一个新类是所有创建的 InheritedPropertyResourceBundle 的一个管理器类,名为 InheritedBundleManager 。 InheritedBundleManager 类是单元素 ― 在 Java 虚拟机中只有一个实例是有效的。使用这个管理器类的原因是要最大限度地减少内存中的资源束。这样考虑一下:如果另一个束每次继承父束时,都要创建一个新的父束,VM 中资源束的数量很快就会超出控制。 出于这个原因, InheritedBundleManager 类管理由 InheritedPropertyResourceBundle 创建的所有实例。每一个束名称、语言环境和类装载程序(语言环境和类装载程序作为可选参数)只允许有一个 InheritedPropertyResourceBundle 的实例。 例如,第一次用缺省语言环境和类装载程序请求 resources.ProductNames 束时,管理器会创建一个新的实例并将其放入缓冲区。当出现带有相同参数的后继请求时,缓冲的实例就会被返回。 所有的新代码都通过 InheritedBundleManager 来获取 InheritedPropertyResourceBundle 的一个实例。重要的是继承束机制的用户要做同样的事。 缺陷 这种方法并非万灵药;它的缺点包括循环继承、获取资源束引用的问题和继承了意外的类。让我们更详细地看一下其中的每一个缺陷。 循环继承 当前的实现并不检查循环继承。例如,如果定义了两个 InheritedPropertyResourceBundle ― 一个名为 resources.CompetitorProductNames ,另一个名为 resources.ProductName ― 两者都被定义为逻辑地继承另一个,解决方案就会失败。 这种检查被有意地留在了设计之外,因为它会降低性能,特别是当继承树比较大的时候。 如果清楚地定义了继承层次结构,确保没有形成循环继承的相关问题,这个问题完全可以被消除。 可以向代码添加检查语句,如果添加的父束会引起循环继承有关的问题,那么一个异常将被 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |