单例模式
一个类在内存中只能存在一个对象
注意:为了避免其他程序过多的创建该对象,先控制禁止其他程序建立该类的对象,然后该类中自定义好一个私有对象,最后对外提供访问该私有对象的方法。
代码实现分三步:(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 } }