`
Funine
  • 浏览: 12872 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

单例模式详解

阅读更多

 应用场景:在程序中只需要有一个该类的实例对象,例如管理员等。
 * 实现思路(基本):
 * 1、通过私有化构造方法,只允许内部本身创建该类的对象;
 * 2、在内部加载Static静态对象,控制它只有一个对象;
 * 3、内部创建共有方法,用来创建,获取该对象。
 *
 * 存在的缺陷:
 * 在多线程的情况下,多个线程同时方法,这个方法的时候,会出现判断是否存在出错的问题。
 *
 * 解决方法1:
 * 使用线程锁,使得该方法无法被多个线程同时调用。
 * 缺点:性能太差,若经常调用,大大影响程序的性能。
 *
 * 解决方法2:
 * 在类加载的时候便对其进行实例化。
 * 缺点:若该类长时间不用,或是本身就比较大的情况下,会浪费大量的内存资源。
 *
 * 解决方法3:
 * 使用静态内部类的形式进行加载,当调用get方法时,才会创建,该类的实例。
 * 完美的解决了方法2的缺陷。
 *
 * 解决方法4:
 * 双重校验法,在加载调用那个get方法的时候,在里面额外加一层线程锁。
 * 和方法2类似。

 

具体代码请参考附件。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics