Singleton模式

王朝java/jsp·作者佚名  2006-01-08
宽屏版  字体: |||超大  

Singleton模式的要点:

1、某个类只能有一个实例

2、必须自行创建这个实例

3、必须向整个系统提供这个实例

Singleton模式的实现方法

1、饿汉式singleton

public class EagerSingleton

{

private static final EagerSingleton m_instance = new Eagersingleton();

private Eagersingleton(){}

public static EagerSingleton getInstance()

{

return m_instance;

}

}

2、懒汉式singleton

public class LazySingleton

{

private static LazySingleton m_instance = null;

private LazySingleton(){};

synchronized public static LazySingleton getInstance()

{

if( m_instance == null )

{

m_instance = new LazySingleton();

}

return m_instance;

}

}

3、登记式singleton

import java.util.HashMap;

public class RegSingleton

{

static private HashMap m_registry = new HashMap();

static

{

RegSingleton x = new regSingleton();

m_registry.put(x.getClass().getName(), x);

}

protect RegSingleton(){}

static public RegSingleton getInstance(String name)

{

if(name == null )

{

name = "RegSingleton";

}

if(m_registry.get(name ) == null )

{

m_registry.put(name, Class.forName(name).newInstance();

}

catch(Exception e)

{

System.out.println("Error happened.");

}

return (RegSingleton)(m_registry.get(name));

}

}

三种Singleton模式的比较

饿汉式 类被加载时就被实例化。

懒汉式 类加载时,不被实例化,在第一次引用时实例化。

饿汉式、懒汉式都不能被继承

而登记式可以被继承。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有