单例模式

单例模式

创建型模式。 有的时候我们一个系统中,可能只需要一个类的一个对象就足够了,在这种情况下,我们就没有必要再创建多个对象。以后系统都要记录日志 ,记录日志把系统运行的日志信息记录到一个文件中,这种情况如果有多个对象去记录日志,就会产生问题,所以以后一般系统中都会只有创建一个日志对象。Factory结尾的类,基本上都是单例模式。

单例模式是最简单的设计模式,单例模式有很多实现方式。今天我们说两种 实现方式 ,饿汉式单例模式 ,懒汉式单例模式。
饿汉式单例模式

package com.aaa.mode.singleton; /*** 饿汉式单例模式 */
 public class HungrySingleton {
	  //第一个步骤 构造方法私有化 
	  private HungrySingleton(){ }
	  //第二个步骤 创建这个类的私有的静态的唯一的对象 
	  private static final HungrySingleton singleton = new HungrySingleton(); 
	  //第三个步骤,提供一个静态方法 用来获取这个类生成的唯一的对象 
	  public static HungrySingleton getInstance(){ 
	  		return singleton; 
	  }
	  public static void main(String[] args) { 
			  HungrySingleton s1 = HungrySingleton.getInstance(); 
			  HungrySingleton s2 = HungrySingleton.getInstance(); 
			  System.out.println(s1==s2); 
	  } 
  }

懒汉式单例模式

package com.aaa.mode.singleton; 
/*** 懒汉式单例模式 */
 public class LazySingleton { 
 //第一个步骤 构造方法私有化 
 private LazySingleton(){ }
 //第二个步骤 创建这个类的私有的静态的唯一的对象 
 private static LazySingleton singleton; 
 //第三个步骤,提供一个静态方法 用来获取这个类生成的唯一的对象 
 public static LazySingleton getInstance() { 
	 if(singleton==null){ 
		 singleton = new LazySingleton(); 
	  }
	 return singleton; 
 }
 public static void main(String[] args) throws Exception { 
		 LazySingleton s1 = LazySingleton.getInstance();
		 System.out.println(s1); 
		 LazySingleton s2 = LazySingleton.getInstance(); 
		 System.out.println(s2);
	     System.out.println(s1==s2);
	     }
 }

两种实现方式的优缺点:

饿汉式: 单例模式不会存在线程安全问题 ,但是有可能会浪费系统的资源。
懒汉式: 单例模式 存在线程安全问题 ,但是资源利用率比饿汉式要高。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值