实现一个单例模式 Java与模式之单例模式
Java与模式之单例模式

单例模式(Singleton) 属于最常见的设计模式之一 大部分系统都会用到 目的是为了维护系统中唯一的一个实例 可分为eager模式 示例代码如下 Java代码 class EagerSingleton{ private static final EagerSingleton m_instance = new EagerSingleton() private EagerSingleton(){} public static EagerSingleton getInstance(){ return m_instance; } } class EagerSingleton{ private static final EagerSingleton m_instance = new EagerSingleton() private EagerSingleton(){} public static EagerSingleton getInstance(){ return m_instance; } } 和 lazy模式 示例代码如下 Java代码 class LazySingleton{ private static LazySingleton m_instance = null; private LazySingleton(){} public synchronized static getInstance(){ if(m_instance == null){ m_instance = new LazySingleton() } return m_instance; } } class LazySingleton{ private static LazySingleton m_instance = null; private LazySingleton(){} public synchronized static getInstance(){ if(m_instance == null){ m_instance = new LazySingleton() } return m_instance; } } java源码中 Runtime getRuntime()就是单例的一个例子 单例模式的精神就是整个系统中维护一个实例 推广开来 如果在一个系统中需要维护多个示例 那么就产生了多例模式(multiton) 多例模式(Multiton) 通过聚集对象了保留自身的多个示例 根据客户端的参数返回所需要的实例 示例代码如下 Java代码 class Multiton{ private final int INSTANCE_SIZE = ; private static Map instances = new HashMap(INSTANCE_SIZE) private String name; private Multiton(){} private Multiton(String name){ this name = name; } public synchronized static getInstance(String name){ if(ntainsKey(name)){ return instances get(name) } else{ ins = new Multiton(name) instances put(name ins) return ins; } } } class Multiton{ private final int INSTANCE_SIZE = ; private static Map instances = new HashMap(INSTANCE_SIZE) private String name; private Multiton(){} private Multiton(String name){ this name = name; } public synchronized static getInstance(String name){ if(ntainsKey(name)){ return instances get(name) } else{ ins = new Multiton(name) instances put(name ins) return ins; } } }
lishixinzhi/Article/program/Java/hx/201311/25909