什么是单例设计模式?
保证一个类在内存中只有一个对象
两种方式:
饿汉单例设计模式:
1.私有化构造函数
2.声明本类的引用类型变量,并创建本类的对象
3.提供一个公共静态的方法获取本类的对象
具体实现:
饿汉单例设计模式:
class Demo{
//创建本类的对象。
private static Demo s = new Demo();
//私有化构造函数
private Demo(){}
//提供一个公共的方法获取本类的对象。
public static Demo getInstance(){
return s;
}
}
public class Test{
public static void main(String[] args) {
Demo o1 = Demo.getInstance();
Demo o2 = Demo.getInstance();
System.out.println("o1和o2是同一个对象吗?"+(o1==o2)); }
}
输出:
o1和o2是同一个对象吗?true
懒汉单例设计模式:
1.私有化构造函数
2.声明本类的引用类型变量,但不创建本类的对象
3.提供一个公共静态的方法获取本类对象,获取之前先判断是否已经创建了本类的对象,如果没有创建,那么先创建后再返回,如果已经创建了直接返回即可
具体实现:
懒汉单例设计模式:
测试:
class Demo{
//声明变量的引用类型变量,但是先不要创建 本类的对象。
private static Demo s;
//私有化构造函数
private Demo(){}
//提供一个公共静态的方法获取本类的对象,获取之前先判断是否已经创建了本类的对象,
//如果没有创建,那么先创建本类的对象,然后再返回。否则直接返回即可。
public static Demo getInstance(){
if(s==null){
s =new Demo();
}
return s;
}
}
public class Test {
public static void main(String[] args) {
Object o1 = Demo.getInstance();
System.out.println(o1);
Object o2 = Demo.getInstance();
System.out.println(o1);
System.out.println(o2);
}
输出:
对象o1的地址:Demo@123a439b对象o1的地址:Demo@123a439b
对象o2的地址:Demo@123a439b