你的问题的前半部分我不清楚,后半部分,我知道:
单例模式常见的两种:懒汉式单例、饿汉式单例
一、懒汉式单例在类加载的时候不创建单例实例。只有在第一次请求实例的时候的时候创建,并且只在第一次创建后,以后不再创建该类的实例。
单例模式-懒汉式单例- public class LazySingleton {
- /*** 私有静态对象,加载时候不做初始化 */
- private static LazySingleton m_intance = null;
- /*** 私有构造方法,避免外部创建实例 */
- private LazySingleton() {
- }
- /*** 静态工厂方法,返回此类的唯一实例.* 当发现实例没有初始化的时候,才初始化. * @return LazySingleton */
- synchronized public static LazySingleton getInstance() {
- if (m_intance == null) {
- m_intance = new LazySingleton();
- }
- return m_intance;
- }
- }
复制代码 二、饿汉式单例在类被加载的时候,唯一实例已经被创建。这个设计模式在Java中容易实现,在别的语言中难以实现。
单例模式-饿汉式单例- public class EagerSingleton{
- /**私有的(private)唯一(static final)实例成员,在类加载的时候就创建好了单例对象*/
- private static final EagerSingleton m_instance = new EagerSingleton();
- /*** 私有构造方法,避免外部创建实例 */private EagerSingleton(){}//提供了一个空的构造方法
- /*** 静态工厂方法,返回此类的唯一实例.* @return EagerSingleton */
- public static EagerSingleton getInstance(){
- return m_instance;
- }
- }
复制代码 |