单例模式寓意只有你 only you!
只能有一个实例,只创建一个对象
创建步骤:
①私有化构造器
②定义一个类方法,提供一个供外界访问,获取单例对象
③在类中提供一个Singleton类型的类属性
④实现某个方法名的类方法
注:static修饰方法为类方法,修饰在属性上为类属性。
在编译运行class文件的时候,static修饰的属性或方法会比对象属性和对象方法更先被创建,生成在数据共享区。
Class Singleton{
//创建类属性 作判断
private static Singleton s;
//私有化构造器
private Singleton(){
}
//创建类方法 用于创建单例对象
public static Singleton getSingleton(){
//如果static修饰的类属性值为null,就创建一个对象
if(s==null){
//初次调用会给 s 赋值
s=new Singleton();
}
//如果不为null,直接返回对象引用
return s;
}
}
public class TestSingleton(){
public void main(String[] args){
//调用类方法,创建对象
Singleton s=Singleton.getSingleton();
System.out.println(s);
}
}
单例模式又分为懒汉模式和饿汉模式
区别:
//饿汉模式 直接创建单例对象:
private static Singleton s=new Singleton();
public static Singleton getSingleton(){
return s;
}
懒汉模式:类加载的时候不被初始化,只在需要的时候创建对象;
饿汉模式:在类加载时就完成了初始化,直接创建对象,不管用或不用,都会创建,浪费资源。