1.单例模式:
1.私有化构造函数(不能再让用户通过new sinlenton(操作随意产生对象))
2.需要给类提供一个唯一的单例对象
3.提供一个公共的接口返回唯一的单例对象
**
2.单例模式的特点:
1.该类只能有一个实例
2.该类只能自己创建这个唯一实例,且别人对该类无法创建实例
3.该类提供一个公开的方法public,让所有类都能够访问该方法并能获得该类自己所创建的实例。
3.饿汉式单例模式
饿汉式单例模式:就是无论别人需不需要自己先自行创建一个实例再说,当别人通过公开方法访问时就已经创建好了,不需要再去创建。
代码实现如下:
/*
*饿汉式单例模式
*/
public class TestSingleton {
public static void main(String[] args) {
Singleton s1 =Singleton.getInstance();
Singleton s2 =Singleton.getInstance();
System.out.println(s1==s2);
}
}
//只能创建singleton的单个实例
class Singleton{
//1.私有化构造器,使得外部类不能够调用此构造器
private Singleton(){
}
//2.在类的内部创建一个实例
private static Singleton instance = new Singleton();
//3.私有化此对象,通过公共的方法来调用
//4.此公共的方法只能通过类来调用,因此设置为static的,同时类的实例也必须为static声明的
public static Singleton getInstance(){
return instance;
}
}
4.懒汉式单例模式
懒汉式单例模式:是等别人需要的时候才会去自己创建该类实例,即刚开始不会自己创建,而是当别人通过公共方法访问时则再创建。
代码实现如下:
/**
* 懒汉式单例模式
*/
public class TestSingleton1 {
public static void main(String[] args) {
Singleton1 s1 = Singleton1.getInstance();
Singleton1 s2 = Singleton1.getInstance();
System.out.println(s1==s2);
}
}
//只能创建singleton的单个实例
class Singleton1{
//1.私有化构造器,使得外部类不能够调用此构造器
private Singleton1(){
}
//2.在类的内部创建一个实例
private static Singleton1 instance = null;
//3.私有化此对象,通过公共的方法来调用
public static Singleton1 getInstance(){
if (instance == null){
/**
* 1.给Singleton对象分配内存
* 3.对象的地址赋给instance变量
* 2.调用Singleton构造函数构造对象
*
*/
instance = new Singleton1();
}
return instance;
}
}