【设计模式】单例模式

单例模式

一个类在内存中只能存在一个对象

注意:为了避免其他程序过多的创建该对象,先控制禁止其他程序建立该类的对象,然后该类中自定义好一个私有对象,最后对外提供访问该私有对象的方法。

代码实现分三步:(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
	}

}

猜你喜欢

转载自blog.csdn.net/pjz161026/article/details/79509717