设计模式5——单件模式
2010-12-22 22:02
176 查看
定义:单件模式确保一个类只有一个实例,并提供一个全局访问点。
类图:
![](http://images.cnblogs.com/cnblogs_com/chenyaoyun/201012/201012222201167074.gif)
示例源码:
pubic class singleton()
[/code]
要点:
1、单间模式确保程序中一个类最多只有一个实例;
2、单件模式也提供访问这个实力的全局点;
3、在java中实现单件模式需要私有的构造器、一个静态方法和一个静态变量;
4、确定在性能和资源上的限制,然后小心地选择适当的方案来实现单件以解决多线程的问题(我们必须认定所有的程序都是多线程的)。
5、如果不是采用第五版的java2,双重检查加锁实现会失效;
6、小心,你如果使用了多个类加载器,可能导致单件失效而残生多个实例;
7、如果使用jvm1.2或之前的版本,你必须建立单件注册表,以避免垃圾收集器将单件回收。
类图:
![](http://images.cnblogs.com/cnblogs_com/chenyaoyun/201012/201012222201167074.gif)
示例源码:
pubic class singleton()
public class Singleton(
[code] private volatile* static Singleton uniqueInstance;
private Singleton(){}
public static Singleton getInstance(){
if(uniqueInstance == null)[
synchronized (Singleton.class){
if(uniqueInstance == null){
uniqueInstance = new Singleton();
}
}
}
}
}
[/code]
要点:
1、单间模式确保程序中一个类最多只有一个实例;
2、单件模式也提供访问这个实力的全局点;
3、在java中实现单件模式需要私有的构造器、一个静态方法和一个静态变量;
4、确定在性能和资源上的限制,然后小心地选择适当的方案来实现单件以解决多线程的问题(我们必须认定所有的程序都是多线程的)。
5、如果不是采用第五版的java2,双重检查加锁实现会失效;
6、小心,你如果使用了多个类加载器,可能导致单件失效而残生多个实例;
7、如果使用jvm1.2或之前的版本,你必须建立单件注册表,以避免垃圾收集器将单件回收。
相关文章推荐
- 魔兽争霸之PHP设计模式-单件模式[Singleton]
- 设计模式--单件模式
- 设计模式--单件模式Singleton(创建型)
- [设计模式] C++设计模式-单件 Good!!!
- 设计模式--单件模式(Singleton)
- 设计模式:单件模式
- Java设计模式——单件模式
- C语言和设计模式(之单件模式)
- 设计模式-PHP实现单件模式的几种…
- “设计模式”学习之二:单件、原型与生成器模式
- 设计模式中单件模式的学习记录-java
- 【设计模式】单件
- 面向对象设计模式学习(二):Singleton单件创建型模式
- 2.面向对象设计模式学习之Singleton单件模式
- 设计模式-单件模式
- c++设计模式之单件模式
- c++设计模式:单件模式(Singleton Pattern)
- C++单件类,设计模式-单件
- NET中的设计模式---单件模式
- [整理]C#面向对象设计模式纵横谈(2):Singleton单件(创建型模式)