设计模式笔记——Singleton

来源:互联网 发布:深海鱼油 知乎 编辑:程序博客网 时间:2024/06/10 01:31

单例模式Singleton

 

构造函数定义为private的作用是阻止类在外部被实例化。

定义显式构造函数则默认的构造函数会失效。

 

保证一个类仅有一个实例,并提供一个访问它的全局访问点。(定义一个静态方法)

 

package singleton.pattern;public class Singleton {private static Singleton instance;/** * 私有化构造函数 */private Singleton() {}/** * 单线程下的单例 *  * @return */public static Singleton GetInstance() {if (instance == null) {instance = new Singleton();}return instance;}/** * 线程锁 */private static Object lock = new Object();/** * 多线程单例,要加锁 *  * @return */public static Singleton GetInstance1() {synchronized (lock) {if (instance == null) {instance = new Singleton();}return instance;}}/** * 多线程单例,双重锁定,避免了GetInstance1()方法中进入方法都判断加锁的弊端 *  * @return */public static Singleton GetInstance2() {if (instance == null) {synchronized (lock) {if (instance == null) {// 注意要再判断一次,防止一个线程执行完后释放// 了锁定又构造了一个实例instance = new Singleton();}}}return instance;}private final static Singleton instance1=new Singleton();/** * 获取已经实例化的instance1 * @return */public static Singleton GetInstance3(){return instance1;}}


原创粉丝点击