一、 概念:所谓的单例设计指的是一个类只允许产生一个实例化对象。
二. 单例设计模式特点:
1. 单例类只能有一个实例。
2. 单例类必须自己创建自己的唯一实例。
3. 单例类必须给所有其他对象提供这一实例。
对于单例设计模式也有两类形式:懒汉式、饿汉式。
三、实现单例设计
- 饿汉式单例
特点:饿汉式单例在类加载初始化时就创建好一个静态的对象供外部使用,除非系统重启,这个对象不会改变,所以本身就是线程安全的
class Singleton{
// 在类的内部可以访问私有结构,所以可以在类的内部产生实例化对象
private final static Singleton INSTANCE = new Singleton();
private Singleton(){ // private 声明构造
}
public static Singleton getInstance(){
return INSTANCE;
}
public void print(){
System.out.println("hello");
}
}
public class SingletonTest{
public static void main(String args[]){
Singleton singleton = null; //声明对象
singleton = Singleton.getInstance();
singleton.print();
}
}
一旦构造方法被私有化了,表示外部无法调用构造即外部不能够产生新的实例化对象
2. 懒汉式单例
特点:当第一次去使用Singleton对象的时候才会为其产生实例化对象的操作.
class Singleton{
// 在类的内部可以访问私有结构,所以可以在类的内部产生实例化对象
private final static Singleton instance;
private Singleton(){ // private 声明构造
}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
public void print(){
System.out.println("hello");
}
}
public class SingletonTest{
public static void main(String args[]){
Singleton singleton = null; //声明对象
singleton = Singleton.getInstance();
singleton.print();
}
}