黑马程序员———设计模式之——单例设计模式
2011-10-20 20:24
295 查看
---------------------- 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
设计模式:
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
相关文章推荐
- 黑马程序员_面向对象一(封装,构造函数,this,static,单例设计模式)
- 黑马程序员--java设计模式
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁
- 单例设计模式及其我对它的理解-----黑马程序员
- 黑马程序员--01.JDK5部分新特性--01【静态导入】【可变参数数组】【享元设计模式的思想】
- 黑马程序员——装饰设计模式(io流)
- 黑马程序员_单例设计模式
- 黑马程序员:享元设计模式
- 黑马程序员_JavaSE基础08 之 单例设计模式 继承 覆盖
- 黑马程序员_多线程中的Lock锁,死锁以及单例设计模式分析
- 黑马程序员_java入门_设计模式
- 黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】
- 黑马程序员_java中代码块的概念--单态设计模式
- 黑马程序员-23种设计模式之单例模式
- 黑马程序员 java学习笔记3-IO流之字节流与装饰设计模式
- 黑马程序员_毕向东JAVA基础_设计模式&异常处理机制
- 黑马程序员---装饰类设计模式
- <<单例设计模式>>--黑马程序员
- 黑马程序员:Java基础总结----单例设计模式
- 黑马程序员---Java 装饰设计模式