单例模式

一.饿汉

package 单例模式饿汉;

public class student {
	//私有化无参构造,外部无法创建该对象
    private student() {
    }
    //私有化对象建立
    private static student s=new student();
    //方法返回该对象
    public static student get() {
    	return s;
    }
}

package 单例模式饿汉;
//饿汉式
//特点:在加载student类的时候,则student的对象就建立完毕

public class DEMO {
  public static void main(String[] args) {
	  //通过student的方法调用
	student s1=student.get();
	student s2=student.get();
	System.out.println(s1);
	System.out.println(s2);
	//单例模式.student@70dea4e
	//单例模式.student@70dea4e
	//两个地址值都相同,因为student类中私有化了构造方法	
	//所以加载该对象的时候创建的类的地址值都是相同的
}
}

二.懒汉

package 懒汉;

public class student {
  private student() {
  }
  private static student s=null;
//  public static student get() {
//	   synchronized (s) {
//		   if(s==null) {
//			   s=new student();
//		   }
//		   return s;
//	}
//  }
  
  //另一种同步机制
  public synchronized static student get1() {
		   if(s==null) {
			   s=new student();
		   }
		   return s;
	}
 }


package 懒汉;
/**
 *  懒汉式:
 * 		符合单例模式核心思想
 * 		1)自定义一个类,将无参构造私有化
 * 		2)在成员位置声明变量
 * 		3)提供公共静态功能,在里面判断的创建该类对象,返回该类对象
 * 
 * 但在使用中会出现多线程问题,即多条语句对student共同操作
 *  为了防止出现问题,加入同步机制
 */
public class demo {
   public static void main(String[] args) {
//	student s1 = student.get();
//	student s2 = student.get();
//	System.out.println(s1);
//	System.out.println(s2);
	student s3 = student.get1();
	student s4 = student.get1();
	System.out.println(s3);
	System.out.println(s4);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值