单例模式
一个类在内存中只能存在一个对象
注意:为了避免其他程序过多的创建该对象,先控制禁止其他程序建立该类的对象,然后该类中自定义好一个私有对象,最后对外提供访问该私有对象的方法。
代码实现分三步:(1)构造器私有化。(2)类中创建本类的私有对象。(3)对外提供可以获取到该对象的方法。
接下来再说,单例模式的分类:饿汉模式(建议使用)、饱汉模式(线程不安全)
/**
* 饿汉模式
* 创建类时就创建好对象
*/
class SingleDemo1{
private int a;
private SingleDemo1(){}
private static SingleDemo1 s1 = new SingleDemo1();
public static SingleDemo1 getInstance(){
return s1;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
}
/**
* 懒汉模式
* 对象被调用时才创建对象
* 因为多线程技术,可能会造成懒汉模式不安全
*/
class SingleDemo2{
private SingleDemo2(){}
private static SingleDemo2 s2 = null;
public static SingleDemo2 getInstance(){
if(s2==null){
s2 = new SingleDemo2();
}
return s2;
}
}
测试结果:
public class Test {
public static void main(String[] args) {
/*
* single1、single2两个变量引用的是同一个对象
*/
SingleDemo1 single1 = SingleDemo1.getInstance();
SingleDemo1 single2 = SingleDemo1.getInstance();
single1.setA(10);
System.out.println(single2.getA()); //10
}
}