A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© satana 中级黑马   /  2016-5-22 00:11  /  192 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


   单例设计模式是为了缓解内存的压力不让你new多个对象,只能new一个出来
     所以该模式原理:是保证某个类中内存中只有一个对象
怎么实现:
     第一步:我将自己写的类的构造方法私有化private,那么你就不能创建对象了吧
     第二部:然后我创建一个方法,这个方法是静态,
     第三部:我将刚创建方法的返回值类型设为该类的名字。这样可以通过类名打点调用
          该方法,而且返回该类型的对象,这样就获得了该类的对象

     单例有两个模式:懒汉式和饿汉式
     (1)饿汉式:
          class Single
          {
               private Single(){}//将构造函数私有化,不让别的类建立该类对象
               private static final Single s=new Single();//自己建立一个对象
               public static Single getInstance()//提供一个公共访问方式
               {
                    return s;
               }
          }
     (2)懒汉式:
          class Single
          {
               private Single(){}
               private static Single s;
               public static Single getInstance()
               {
                    if(s==null)//延迟了加载
                         s=new Single();
                    return s;
               }
          }
这两个模式的区别:
     (1)饿汉式是类一加载进内存就创建好了对象;懒汉式是延迟加载,
     (2)如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题
          可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马