HarderXin的专栏

努力做好自己,既然选择了,就风雨兼程!

单例模式

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

单例模式使用的好处:可以节省内存,因为它限制了实例的个数,有利于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框架也大量使用了单例类。

阅读更多
个人分类: 设计模式
想对作者说点什么? 我来说一句

单例模式单例模式单例模式

2011年07月31日 467KB 下载

研磨单例模式研磨单例模式

2010年12月15日 123KB 下载

单例模式(讲解单例模式)

2011年01月18日 317KB 下载

php单例模式和工厂模式

2009年05月22日 54KB 下载

Java单例模式(DOC)

2009年10月21日 91KB 下载

设计模式之单例模式

2017年12月01日 9KB 下载

JAVA单例模式

2013年11月14日 46KB 下载

线程安全的单例模式

2012年12月07日 345KB 下载

单例模式详解~~单例模式详解~~

2011年03月01日 39KB 下载

研磨设计模式之单例模式.pdf

2011年11月16日 311KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭