单例模式--确保一个类只有一个实例,并提供一个全局访问点。
2017-02-05 22:41
316 查看
一、定义:单件模式--确保一个类只有一个实例,并提供一个全局访问点。
二、方式:
1.懒汉式
2.饿汉式
3.双重检索加锁
二、方式:
1.懒汉式
/** * * @author Kevintan * 经典的单件模式的实现,懒汉式 * synchronized 处理多线程的同步问题。 * 缺点:降低了性能,不利于程序频繁的调用 * 适用场景:性能对应用程序不是很关键。 */ public class Singleton1 { private static Singleton1 uniqueInstance ; private Singleton1() {} public static synchronized Singleton1 getInstance(){ if (uniqueInstance == null) { uniqueInstance = new Singleton1(); } return uniqueInstance; } }
2.饿汉式
/** * * @author Kevintan * 急切实例化,饿汉式 * 适用于:应用程序总是创建并使用单件实例或创建和运行时的负担不太繁重。 * 缺点:不能用于频繁创建或使用或耗费内存过大的程序中。 */ public class Singleton2 { private static Singleton2 uniqueInstance = new Singleton2(); private Singleton2() {} public static Singleton2 getInstance(){ if (uniqueInstance == null) { uniqueInstance = new Singleton2(); } return uniqueInstance; } }
3.双重检索加锁
/** * * @author Kevintan *双重检索加锁 *原理:首先检查是否实例已经创建了,如果尚未创建,“才”进行同步。 *这样一来,只有第一次创建实例时会同步。 *优点及适用于:帮助你大大减少时间耗费,提高性能 */ public class Singleton3 { private static volatile Singleton3 uniqueInstance ; private Singleton3() {} public static synchronized Singleton3 getInstance(){ if (uniqueInstance == null) { synchronized (Singleton3.class) { if (uniqueInstance == null) { uniqueInstance = new Singleton3(); } } } return uniqueInstance; } }
相关文章推荐
- 单例模式(Singleton)-保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 单例模式--能够保证一个类仅有唯一的实例,并提供一个全局访问点。
- 单例模式确保某个类只有一个实例
- SingleTon 要求一个类有且仅有一个实例,并提供一个全局的访问点.
- C# 确保程序只有一个实例在运行[转]
- 使用java Reflection机制使单例模式不再只有一个对象的实例
- 转-如何确保应用只有一个实例运行
- C#代码实现,确保windows程序只有一个实例(instance)
- 单例模式,多线程同时访问一个实例对象问题的处理,加lock .
- windows 下确保只有一个程序实例
- C#确保只有一个实例在运行的方法
- 为全局、静态、单件实例的类提供一个Release接口是非常必要的。让其在析构里面什么也不做。
- C#代码实现,确保windows程序只有一个实例(instance)
- 确保只有一个程序实例运行(C#)之解决方案
- C++设计模式5--单例模式Singleton--当前对象只有一个实例 .
- 未能添加对XX的引用,这不是一个有效的程序集或COM组件,只有具有扩展名dll的程序集和COM组件才能被引用。请确保该文件可访问,并且 是一个有效的程序集或COM组件
- GOOD单例模式,多线程同时访问一个实例对象问题的处理,加lock
- Unix线程,互斥量,确保同一时间只有一个线程访问数据
- 如何确保应用只有一个实例运行
- python实现单例模式,从始至终都只有一个实例