`
liukexiong
  • 浏览: 83756 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

单例模式之我见

阅读更多

       单例模式应该是23种设计模式之中最简单也最为常用的,面试中经常考到!

       那么什么是单例模式呢?

       定义:一个类只有一个该类的对象,我们不能够自己去new这个对象

       适用场景:这个类的唯一对象是没有状态的,通俗点说就是服务性质的对象,我们没有必要每次用它的时候去new一个这个类的一个对象,这样不仅浪费空间(矩形对象)而且完全没有必要.大家在开发J2EE的时候,应该经常使用SSH框架吧?其实我们在业务逻辑层(Spring)持有的持久层对象(Hibernate)就是典型的单例模式的运用.说到这里,我想大家都能够理解了

      单例模式分为以下2种:饿汉式(饿了当然要马上吃,呵呵)和懒汉式(冬天冷了不想起来,就算饿了也不立即吃,除非实在忍受不鸟),当然这是个玩笑...

   

饿汉式:

package com.liu.test;
/*
 * 饿汉式
 */
public class InstanceHungary {

   //静态初始化
   private static InstanceHungary instance=new InstanceHungary();
   
   //私有的构造方法,不能在外部在去new这个类的对象
   private InstanceHungary(){}
    
  //提供访问单例的方法,返回这个唯一的对象
   public static InstanceHungary getInstance()
  {
      return instance;
  }
 
  public void fun()
 {
     System.out.println("i will waiting for you no matter where you are!");
 }
 
 public static void main(String[] args) 
 {
     InstanceHungary instance=InstanceHungary.getInstance();
     instance.fun();
 }
}

   

懒汉式;

package com.liu.test;
/*
 * 懒汉式
 */
public class InstanceLazy {
 
 //不再静态初始化
 private static InstanceLazy instance=null;
 
 //私有的构造方法
 private InstanceLazy(){}
 
    //提供访问单例的方法,返回这个唯一的对象
 public static InstanceLazy getInstance()
 {
     //如果此时该类的单例对象还没有产生,我们就要new它
    if(instance==null)
   {
         //防止多个线程同时去new
       synchronized(InstanceLazy.class)
      {
        //防止进入synchronized的线程instance对象已经不为null
        if(instance==null)
       {
         instance=new InstanceLazy(); 
       } 
     }
  } 
     return instance;
}
 
 public void fun()
 {
     System.out.println("i will waiting for you no matter where you are!");
 }
 
 public static void main(String[] args) 
 {
     InstanceLazy instance=InstanceLazy.getInstance();
     instance.fun();
 }
}

  

分享到:
评论
2 楼 爱在爪哇 2012-05-25  
还跟老子扯框架??源代码都没读的B还有资格扯?
1 楼 tg008007x3 2010-12-21  
很黄很暴力!

相关推荐

    RPCZ中的智能指针单例代码

    代码说明见: RPCZ中的智能指针单例 http://blog.csdn.net/jq0123/article/details/44023961

    PHP单例模式定义与使用实例详解

    先简单的介绍一下单例模式。单例模式就是在应用程序中保持某一个类实例只存在一个,而且不可以受外部环境的影响而生成这个类的第二个实例。它的优点,实际点见,如果在WEB开发中,保持单一个数据操作类实例的存在,...

    Java设计模式 pdf 示例代码 刘伟

    这是我见过的最好的设计模式讲解资料。为什么这么说呢?因为它不像其他的书籍那样,只讲解原理,还把每个设计模式的由来动机也讲解得很详细。它的讲解思路为:模式动机->模式定义->模式结构->模式分析(即原理)->...

    二十三种设计模式【PDF版】

    设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之 Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new 一样频繁. ...

    design-patterns

    单例模式 结构模式模型-视图-控制器 项目结构 遵循一般的gradle项目结构。 检查以获取更多信息。 项目的主类应命名为Main.java并应位于$project-name/main/src/java/io/github/halfo/目录中(因为这是build.grade的...

    scala从入门到精通技术教学视频

    上百节课详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程亮点: 1,知识体系完备,从小白到大神各阶段读者均能学有所获。 2,生动形象,化繁为简,讲解通俗易懂。 3,结合工作实践及分析应用...

    word源码java-HongsCORE.old:Hong的公共对象请求引擎

    word源码java 此项目因源码仓库维护不当,导致提交了一些 jar,zip 等格式的大文件,既无法下拉,也无法上推。...(单例模式), 在需要某个对象时只管请求, 使对象的使用效率更高. 具体到这个 Java 版本中, 利用了 Thr

    Mybatis-Learning:学习mybatis的demo与总结

    改进成使用util单例模式来获取SqlSession的实例,节省资源,以及从属性文件读取信息,有利于解耦合。 4. 定义别名能让我们快速简洁的看出类型信息,省去许多写路径名的麻烦。 5. 完整的增删改查的demo。 6. 如何在...

    代码生成器-可自定义模版-guns

    系统地讲解了如何构建一个日常生产环境...10. 页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,提高js的利用效率,并且有效防止多个人员开发引起的函数名/类名冲突,并且可以更好地去维护代码

    Java程序员应当知道的10个面向对象设计原则

    面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) 、 Decorator(装饰器)、Observer(观察者) 等设计模式,而没有把足够多的注意力放在学习面向对象的分析和设计上面。...

    Guns后台管理系统-其他

    9、页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,提高js的利用效率,并且有效防止多个人员开发引起的函数名/类名冲突,并且可以更好地去维护代码。 10、在线系统参数配置,灵活控制常用...

    最新JAVA编程题全集_50题及答案

    写一个单例模式(遇到两次) public class Test { private Test(){} private static Test test; public static Test getInstance() { if(test==null) { test = new Test(); } return test; }} 5. //统计...

Global site tag (gtag.js) - Google Analytics