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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 银哥 中级黑马   /  2015-6-16 21:12  /  348 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

懒汉式和饿汉式有什么区别,怎么理解

4 个回复

正序浏览
单例模式:饿汉式。实例;在整个程序运行期间,全局对于某个类,只能产生一个这个类的对象。可以把这个类设计成"单例模式";注意:1.防止外部任意的实例化此类对象,将构造方法私有化;2.内部定义一个此类型的成员变量;并初始化;声明为:private static;3.为了封装性,将成员属性私有,提供公有方法获取这个对象;声明为:public static
单例模式:懒汉式。1.将构造方法私有化;2.提供私有成员,但不初始化;3.提供公有方法,先判断成员变量是否为null,如果为null,进行实例化。否则直接返回引用;注意:由于方法内操作步骤较多,另外有可能被多线程并发访问,所以加:synchronized关键字;
回复 使用道具 举报
单例模式:饿汉式。实例;在整个程序运行期间,全局对于某个类,只能产生一个这个类的对象。可以把这个类设计成"单例模式";注意:1.防止外部任意的实例化此类对象,将构造方法私有化;2.内部定义一个此类型的成员变量;并初始化;声明为:private static;3.为了封装性,将成员属性私有,提供公有方法获取这个对象;声明为:public static
回复 使用道具 举报
饿汉式就是一开始就创建对象,懒汉式是需要的时候再用。
回复 使用道具 举报
所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间的不同。 “懒汉式”是在你真正用到的时候才去建这个单例对象: 比如:有个单例对象 public class Singleton{      private Singleton(){}     private static Singleton singleton = null;  //不建立对象     public static synchronized Singleton getInstance(){              if(singleton == null) {        //先判断是否为空                                  singleton = new Singleton ();  //懒汉式做法               }              return singleton ;      } }  “饿汉式”是在不管你用的用不上,一开始就建立这个单例对象:比如:有个单例对象 public class Singleton{      public Singleton(){}     private static Singleton singleton = new Singleton();  //建立对象     public static Singleton getInstance(){         return singleton ;//直接返回单例对象    }} 它有以下几个要素:  私有的构造方法 指向自己实例的私有静态引用 以自己实例为返回值的静态的公有的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马