浏览 4116 次
锁定老帖子 主题:单例模式(Singleton)
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-13
单例模式确保某一个类只有一个实例,而且向这个系统提供这个实例。 二、单例模式的要点: 1、某个类只能有一个实例 2、它必须自行创建这个实例 3、必须自行向这个系统提供这个实例 三、单例模式的结构及实现: 1、饿汉式单例类: 类图: 代码: public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); private EagerSingleton() { } public static EagerSingleton getInstance() { return m_instance; } } 当类被加载的时候,static 类型的m_instance就会被事例化,保证的单利模式的自动创建条件,他是常量,保证了值不变,即保证了对象的唯一;事例的创建调用了私有的构造方法,构造方法私有保证了外界不能直接调用。 2、懒汉式单利类: 类图: 代码: 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、注册式单例类 类图 代码 import java.util.HashMap; public class RegSingleton { static private HashMap m_registy = new HashMap(); static { RegSingleton sl = new RegSingleton(); m_registy.put(sl.getClass().getName , x); } protected RegSingleton() { } public static RegSingleton getInstance(String name) { if(name==null) { name = "easyworld.pattern.RegSingleton"; } } if(m_registy.get(name)==null) { try { m_registy.put(name,Class.forName(name).newInstance()); } catch (Exception e) { System.out.println("Erorr"); } } return (RegSingleton)(m_registry.get(name)); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |