您的位置:首页 > 职场人生

黑马程序员———设计模式之——单例设计模式

2011-10-20 20:24 246 查看
---------------------- android培训java培训、期待与您交流! ----------------------

设计模式:

1. 单例设计模式的作用:

解决一个类在内存只存在一个对象。

2. 单例设计模式的存在的原因:

为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象。

为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。

为了方便其它程序对自定义对象的访问,可以对外提供一些访问方法。

3. 单例设计模式的实现方法:

具体代码实现:

将构造函数私有化

在类中创建一个本类对象。

提供一个方法可以获取到该对象。

3. 单例设计模式的实际应用:

为了解决数据库连接池多线高并发的问题 特应用单例高并发 处理代码如下

Java代码

public class DBConnection{

private DBConnection{}
/**
*数据库链接
*/
private volatile static Connection conn=null;

public static Connection getConnection(){
if(conn==null){
synchronized (PMSServerContext.class) {
if(conn == null)
conn = DBConnection.getImplementation().getConnection();
}
}
}
}

在getConnection()的方法中首先判断实例是否被创建,如果没有被创建,首先使用同步代码块 synchronized,在同步代码块里面我们还要再次判断实例是否被创建。这是因为如果第二次没有检查,线程同时进入方法体他们都检测conn为null,不管哪个线程先占据同步锁创建实例对象,都不会影响例外一个线程创建实例对象,所以我们在同步代码块中第二次判读该对象是否已经被创建。

第二属性conn是被volatile修饰的,因为它具有 synchronized的可见性特点,也就是说线程能够自动发现volatile的最新值。这样,如果conn实例化成功,其他线程便立即发现。

单例设计模式补充

单例的别一种实现方式,通过枚举实现, 前提:

该枚举中有且只有一个实例对象。

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: