首页 > 学院 > 开发设计 > 正文

单例模式--确保一个类只有一个实例,并提供一个全局访问点。

2019-11-11 06:56:01
字体:
来源:转载
供稿:网友

一、定义:单件模式--确保一个类只有一个实例,并提供一个全局访问点。

二、方式:

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;	}	}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表