黑马程序员技术交流社区
标题:
单例设计模式的使用?
[打印本页]
作者:
符立波
时间:
2012-10-22 08:43
标题:
单例设计模式的使用?
谁能说的下单例设计模式的使用的具体应用(最好举个实际代码例子)?还有就是为什么说懒汉式的特点在于实例的延迟加载呢?最后怎么用线程去操作懒汉式,而且证明它使用的锁是类名.class?
作者:
刘学宾
时间:
2012-10-22 09:25
首先,单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
单例模式的应用:单例模式适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。
例如一台计算机可以有多台打印机,但只能有一个 Printer Spooler.
作者:
草上飞
时间:
2012-10-23 20:07
单例设计模式的实现有两种:饿汉式(预先加载)、懒汉式(延迟加载),下面分别来看这两种实现方式。
(1)、饿汉式(预先加载)
public class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){}
public static synchronized Singleton getInstance(){
return instance;
}
}
(2)懒汉式(延迟加载)
public class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
public class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
观察上面的这两种模式,看起来区别并不大,前一种方式是类一旦加载就得将对象实例化了,而后一种则是在使用的时候才进行判断是否要实例化对象,并且在后一种的getInstance方法中加入了同步,这样显得更加的合理,个人更加偏好于使用第二种方式。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2