您的位置:首页 > 其它

单例设计模式

2015-08-27 09:20 176 查看
一、概述

1.目的:保证一个类在内存中的对象只有一个。

2.思想:

(1)不让其他程序创建该类对象;
(2)在本类中创建一个本类对象;
(3)对外提供方法,让其他程序获取这个对象。
3.代码体现:
(1)私有化构造函数;
(2)创建私有并静态的本类对象;
(3)定义公有并静态的方法,返回该对象。

二、饿汉式

class Single{

private Single(){}
//私有化构造函数。

private static Single s=new Single();
//创建私有并静态的本类对象。

public static Single getInstance(){
//定义公有并静态的方法,返回该对象。

return s;

}

}

三、懒汉式(也叫做对象的延时加载)

class Single{
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;
}

在getInstance()方法前面加上synchronized关键字,但每次调用此方法都会对其进行判断,效率较低;
第二种解决方案:同步代码块

public static synchronized Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{

if(s==null)
s=new Single();
}
}
return s;
}
有了对象之后就不会再判断锁,所以效率不会较低。
定义单例时建议使用饿汉式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: