单例设计模式

Bettygonna 2013-03-30 08:40:14
饿汉式懒汉式的调用方法,给个加注释的例子,写了亲
...全文
211 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
十年彩虹 2013-04-06
  • 打赏
  • 举报
回复

package com.javapatterns.singleton;

/**
 * 饿汉式单例类
 *
 */
public class EagerSingleton {
    
    private static final EagerSingleton m_instance = new EagerSingleton();
    
    /**
     * 私有的构造方法
     */
    private EagerSingleton(){
        
    }
    
    /**
    
     * 功能:静态工厂方法
     * @return EagerSingleton
     * @param @return
     * @date 2013-4-4
     * @author arch_mage
     */
    public static EagerSingleton getInstance() {
        return m_instance;
    }
    

}


package com.javapatterns.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;
    }

}

fsh2008 2013-04-02
  • 打赏
  • 举报
回复
这两种方式调用的时候是一样的,就只有初始化的时间不一样。 前一种是在定义这个对象的时候就初始化,也就是类加载的时候。 后一种是在调用这个方法的时候才初始化。 上面例子很清晰了。
天镶 2013-04-02
  • 打赏
  • 举报
回复
懒汉不就是使用时才创建么,饿汉就是一开始就创建好了
北吹 2013-04-02
  • 打赏
  • 举报
回复
利用JAVA加载静态内部类的原理,实现懒汉加载,不需要同步 public class TestObject{ private TestObject(){} public static TestObject instance(){ return InnerSingletonHandler.getSingleton(); } private static class InnerSingletonHandler{ private static TestObject singleton = new TestObject(); private InnerSingletonHandler(){} private static TestObject getSingleton(){ return singleton; } } }
xianwangkai 2013-04-02
  • 打赏
  • 举报
回复
引用 1 楼 ticmy 的回复:
http://www.iteye.com/topic/1121918
看这个!
xuchuandi 2013-04-01
  • 打赏
  • 举报
回复
有视频的,可以看看
长笛党希望 2013-04-01
  • 打赏
  • 举报
回复
懒汉式
public class LazySingleton {  
  
   private static LazySingleton instance = null;  
  
   private LazySingleton(){};  
  
   public static synchronized LazySingleton getInstance(){  
  
   if(instance==null){  
     instance = new LazySingleton();  
     }  
  
   return instance;  
  }  
}
饿汉式
public class EagerSingleton {  
  
         private static EagerSingleton instance = new EagerSingleton();  
  
         private EagerSingleton(){};  
  
         public static EagerSingleton getInstance(){  
            return instance;  
        }  
}
Bettygonna 2013-04-01
  • 打赏
  • 举报
回复
我想看一下调用的方法,一个例子,谢谢了
Fate- 2013-03-31
  • 打赏
  • 举报
回复
public class Singleton{ private static Singleton{}; private static Singleton st=new Singleton(); public static Singleton get(){ return st; }
龙四 2013-03-30
  • 打赏
  • 举报
回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧