首页 > 其他 > 详细

单例模式

时间:2019-08-29 01:36:29      阅读:104      评论:0      收藏:0      [点我收藏+]

在有些系统中,为了减少内存开支、保证数据内容的一致性,对某些类只创建一个惟一的访问点实例,这就是所谓的单例模式。

在计算机系统中,如 Windows 的回收站、打印机的后台处理服务,
在我们javaweb项目中的日志对象、数据库的连接池、配置对象、缓存对象或者持久化对象等常常被设计成单例。

单例模式有 3 个特点:

  1. 单例类只有一个实例对象;
  2. 该单例对象必须由单例类自行创建;
  3. 单例类对外提供一个访问该单例的全局访问点;

懒汉式单例
该模式的特点是类加载时没有生成单例,只有当第一次调用 getlnstance 方法时才去创建这个单例
public class LazySingleton { // 保证 instance 在所有线程中同步,禁止指令重排序 private static volatile LazySingleton instance = null; private LazySingleton(){} //private 避免类在外部被实例化 public static synchronized LazySingleton getInstance() { //getInstance 方法前加同步 if (instance==null) { instance=new LazySingleton(); } return instance; } // 双重检查 public static LazySingleton getInstanceB() { if (instance == null) { synchronized (LazySingleton.class) { if (instance == null) { instance = new LazySingleton(); } } } return instance; } }

饿汉式单例
该模式的特点是类一旦加载就创建一个单例,保证在调用 getInstance 方法之前单例已经存在了。所以也就不存在线程安全的问题了
public class HungrySingleton { private static final HungrySingleton instance = new HungrySingleton(); private HungrySingleton(){} public static HungrySingleton getInstance() { return instance; } }

单例模式

原文:https://www.cnblogs.com/lileee/p/11427125.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!