Java学习之单例模式
单例设计模式:解决一个类在内存中只存在一个对象
思想:
1.为了避免过多创建类的对象,禁止此类以外创建对象(构造方法私有化)
2.为了类可以被使用就必须创建此类对象,只好在本类中,创建对象
3.在此类中创建的对象,怎么给此类以外的使用,所已此类必须提供返回对象的一个方法
思想:
1.为了避免过多创建类的对象,禁止此类以外创建对象(构造方法私有化)
2.为了类可以被使用就必须创建此类对象,只好在本类中,创建对象
3.在此类中创建的对象,怎么给此类以外的使用,所已此类必须提供返回对象的一个方法
代码体现:
1.将构造函数私有化
2.在类中创建对象
3.提供一个方法用于获取此类对象
1.将构造函数私有化
2.在类中创建对象
3.提供一个方法用于获取此类对象
class Single { /** 方式一、饿汉式 开发建议使用 */ //1.将构造函数私有化 private Single(){} //2.在类中创建对象 private static Single s=new Single(); //3.提供一个方法用于获取此类对象 public static Single getInstance() { return s; } /** 方式二、懒汉式 */ private Single(){} private static Single s=null; //线程不安全 public static Single getInstance() { if(s==null) s=new Single(); return s; } //加同步(效率低) public static synchronized Single getInstance() { if(s==null) s=new Single(); return s; } //双重判断 public static Single getInstance() { if(s==null) { synchronized(Single.class) { if(s==null) s=new Single(); } } return s; } private int num; public int getNum() { return num; } public void setNum(int num) { this.num=num; } } class SingleDemo { public static void main (String[] args) { Single s1=Single.getInstance(); Single s2=Single.getInstance(); s1.setNum(23); System.out.println(s2.getNum()); } }