方寸心间

一路走,十年不回头

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
单例方式应该在如下场景使用
1.不分状态的共享对象。
 当你拥有一个没有状态之分并且有多个依赖对象的对象。因为如果没有状态之分,你就不需要同步,当
 每次某个依赖对象在工作中需要使用这个bean的时候你就不需要创建一个新的实例。
2.只读状态的共享对象。
 这与第一点类似,但是你有一些只读状态。这种情况,你依然不需要同步,所以为了满足每个请求而创
 建新的实例,对于这个bean来说只不过是增加无用的开销。
3.使用共享状态的共享对象。
 如果你的bean的状态必须共享,那么单例是最理想的选择。这种情况下,要保证你的状态回写的同步操
 作的粒度越小越好。
4.具有可记录状态的高吞吐量对象。
 如果你有个bean在你的程序中被大量使用,那么你也许会发现,维护一个单例和其所有bean状态回写的
 同步与持续创建上百个该bean的实例相比,能够提供更好的性能。使用这种方法,一定要努力保存同步
 的细粒度而不要牺牲一致性。你会发现这种方法在你的程序运行了很长的时间且创建了大量的实例后会
 显得特别有用,此时你的共享对象只有少量的可回写状态,而这时实例化新的实例将会耗费巨大。
以下场景需要考虑使用非单例创建模式:
1.具有可回写状态的对象:
 如果你的bean拥有一些可回写状态,这时你会发现对它们进行同步操作要比为每个请求创建一个新的实
 例耗费的资源更多。
2.具有私有状态的对象:
 在一些情况中,你的某个独立对象需要拥有它私有的状态,这样它们能够与其所依赖的bean单独处理自
 己的操作。这种情况下,单例显然不合适,你需要使用非单例模式。
posted on 2008-04-17 10:15  方寸心间  阅读(1241)  评论(0编辑  收藏  举报