单利模式
-
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
-
注意
- 单例类只能有一个实例。
- 单例类必须自己创建自己的唯一实例。
- 单例类必须给所有其他对象提供这一实例。
-
实例的步骤
- 私有的构造器
- 私有的,静态的,该类的引用
- 公共的静态的访问方式
-
懒汉式: 第一次调用时候,才创建实例
//懒汉式
public class Single{
//私有的静态的引用
private static Single single=null;
//私有的构造器
private Single(){
}
//公共的静态访问
public static Single test(){
if(single==null){
single=new Single();
}
return single;
}
}
下面是调用饿汉式的代码
public class SingleTest{
public static void main(String[ args]){
Single single=Single.test();
}
}
- 饿汉式:在类第一次加载完成之后,就创建实例
//饿汉式
public class Single{
private static Single single=new Single();
private Single(){
}
public static Single test(){
return single;
}
}
下面是调用饿汉式的代码
public class SingleTest{
public static void main(String[ args]){
Single single=Single.test();
}
}
- 懒汉式:保证线程安全通过 同步锁 synchronized
//同步方法,效率较低,范围大
public static synchronized Single test(){
if(single==null){
single=new Single();
}
return single;
}
//同步判断
public static synchronized Single test(){
synchronized (Single.class) {
if(single==null){
single = new Single();
}
}
return single;
}
//双重检查 double check:锁的范围小,效率高
public static SingleTon01 newInstance(){
if(single==null){
synchronized (Single.class) {
if(single==null){
single = new Single();
}
}
}
return singleTon;
}