单例模式

原创 2012年03月22日 09:40:47

什么是单例模式:表示一个类中只有一个实例存在

单例模式使用的好处:可以节省内存,因为它限制了实例的个数,有利于java垃圾回收

实际案例

单例模式的三个重要的特点

1、确保自己只有一个实例 2、单例类必须创建自己的实例 3、单例类必须为其它的对象提供唯一实例

常见单例模式的实现方式:懒汉单例类和饿汉单例类

懒汉单例类:我们可以这样理解,该对象非常懒,只有当外部对象第一次请求实例的时候才去创建实例。它在有需要实例的时候,才去判断自己是否已经创建了实例,如果没有,则自己创建一个实例,然后返回,如果存在则直接返回该实例

java实例代码:以下代码在多线程中可能会出现问题

public class SingtonTest {
	private static SingtonTest sington;
	private SingtonTest(){
		
	}
	public static SingtonTest getSington(){
		if(sington==null){
			sington= new SingtonTest();
		}
		return sington;
	}
	
	public static void main(String[] args) {
		SingtonTest test1=SingtonTest.getSington();
		SingtonTest test2=SingtonTest.getSington();
		System.out.println(test1==test2);
	}
}

饿汉单例类:我们可以这样理解,该单例类非常额,急需要补充食物,所以在类加载的时候就立即创建实例
java实例代码:
public class SingtonTest {
	private static SingtonTest sington=new SingtonTest();
	private SingtonTest(){
		
	}
	public static SingtonTest getSington(){
		return sington;
	}
	
	public static void main(String[] args) {
		SingtonTest test1=SingtonTest.getSington();
		SingtonTest test2=SingtonTest.getSington();
		System.out.println(test1==test2);
	}
}

比较懒汉单例类和饿汉单例类的优缺点



单例模式三个主要的作用

第一:控制资源的使用,通过线程同步来控制资源的并发访问

第二:控制实例产生的数量,达到节约资源的目的

第三:作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。

单例案例


使用单例模式核心的一点是体现了面向对象封装性中的单一职责和对象自治的原则,当我们定义的类在很多地方需要new的时候,我们可以将类设置为单例类,把这个生成对象的的活交给类本身。实际上,配置信息类、管理类、控制类、门面类、代理类通常被设计为单例类,java中的struts、spring框架也大量使用了单例类。

相关文章推荐

单例模式

  • 2015年06月24日 10:08
  • 21KB
  • 下载

Android线程池+单例模式+webService

  • 2017年11月01日 10:36
  • 50.14MB
  • 下载

java 双重检查锁定及单例模式

双重检查锁定及单例模式全面理解这一失效的编程习语Peter Haggar , 高级软件工程师, IBMPeter Haggar 是 IBM 在北卡罗来纳州的 Research Triangle Pa...
  • kufeiyun
  • kufeiyun
  • 2011年01月27日 15:09
  • 15654

单例模式

  • 2013年11月14日 14:44
  • 24KB
  • 下载

单例模式详解

  • 2014年06月06日 00:14
  • 25KB
  • 下载

双重检查锁定(double-checked locking)与单例模式

单例模式有如下实现方式:package com.zzj.pattern.singleton; public class Singleton { private static Singleton i...

单例模式学习

  • 2013年01月06日 15:20
  • 3KB
  • 下载

耦合和单例模式的理解

  • 2014年08月18日 09:28
  • 21KB
  • 下载

Python单例模式的4种实现方法

#-*- encoding=utf-8 -*- print '----------------------方法1--------------------------' #方法1,实现__new__方法...

java单例模式

  • 2013年06月07日 14:58
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单例模式
举报原因:
原因补充:

(最多只允许输入30个字)