JAVA学习(单例设计模式)
一、单例设计模式
解决的问题:可以保证一个类在内存中的对象唯一性。
例如:
必须对多个程序使用同一配置信息对象时,就需要保证该对象的唯一性
如何保证对象的唯一性:
1.不允许其他程序使用new创建该类对象。(私有化该类构造函数。其他程序无法创建该类对象,因为构造函数无法访问)
2.在该类中创建一个本类实例。
3.对外提供一个方法让其他程序可以获取该对象。(定义一公有的方法,将创建的对象返回)
代码例子:
饿汉模式,在类创建的时候,对象就已经存在了
public class Single { private int num; private static Single s = new Single(); //在该类中创建一个本类实例 private Single(){} //私有化该类构造函数 public static Single getInstance() { //对外提供一个方法让其他程序可以获取该对象 return s; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } } public class SingleDemo{ public static void main(String[] args){ Single s1 = Single.getInstance(); Single s2 = Single.getInstance(); s1.setNum(10); s2.setNum(20); System.out.println(s1.getNum()); System.out.println(s2.getNum()); } }
运行结果:

对象s1与s2使用的是一个对象实例;
懒汉模式:类加载进来的时候还没有对象,只有调用了getInstance方法时,才会创建对象
(在多线程并发访问的时候,可能无法保证对象的唯一性)
public class Single {
private int num;
private static Single s = null; //在该类中创建一个本类实例
private Single(){} //私有化该类构造函数
public static Single getInstance() { //对外提供一个方法让其他程序可以获取该对象
if(s==null){
s = new Single();
}
return s;
}

浙公网安备 33010602011771号