单例设计指的是一个类只允许产生一个实例化对象
public class Singleton {
//在类的内部是允许访问私有结构,所以可以在类的内部产生实例化对象
static Singleton instance=new Singleton();//内部产生实例化对象
/*为什么需要使用static关键字呢?
* 当使用了static关键字后,我们可以直接在外部使用 类名称.对象属性
* Singleton s=Singleton.instance;获得Singleton实例化对象instance
*/
private Singleton(){ //所以方法都可以使用四种权限修饰符
}
public static Singleton getInstance() {
return instance;
}
public static void setInstance(Singleton instance) {
Singleton.instance = instance;
}
public void print(){
System.out.println("Hello World!");
}
}
public class Test {
public static void main(String[] args) {
Singleton s=null; //声明对象
//因为instance对象(属性)使用啦static关键字所以可以直接用类名访问
s=Singleton.instance; //实例化对象
s.print();
}
}
这样做的目的是,只希望类中产生唯一的一个实例化对象。
作为这种单例设计模式,也有两类形式:懒汉式、饿汉式。
上面的程序做法就是一种饿汉式,只要程序加载啦那么就一定会自动创建好一个公共的instance对象,既然饿汉式,就希望整体的操作之中只能够有一个实例化对象,所以一般还会为其追加上final。
懒汉式:当第一次去使用Singleton类对象的时候才会为其实例化对象
(先提及一下,后面多线程具体讲解)