黑马程序员技术交流社区
标题:
设计模式
[打印本页]
作者:
银哥
时间:
2015-6-16 21:12
标题:
设计模式
懒汉式和饿汉式有什么区别,怎么理解
作者:
xtf
时间:
2015-6-16 21:21
所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间的不同。 “懒汉式”是在你真正用到的时候才去建这个单例对象: 比如:有个单例对象 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 ;//直接返回单例对象 }} 它有以下几个要素: 私有的构造方法 指向自己实例的私有静态引用 以自己实例为返回值的静态的公有的方法
作者:
痞子刘忙
时间:
2015-6-16 22:15
饿汉式就是一开始就创建对象,懒汉式是需要的时候再用。
作者:
keto
时间:
2015-6-16 22:19
单例模式:饿汉式。实例;在整个程序运行期间,全局对于某个类,只能产生一个这个类的对象。可以把这个类设计成"单例模式";注意:1.防止外部任意的实例化此类对象,将构造方法私有化;2.内部定义一个此类型的成员变量;并初始化;声明为:private static;3.为了封装性,将成员属性私有,提供公有方法获取这个对象;声明为:public static
作者:
keto
时间:
2015-6-16 22:21
单例模式:饿汉式。实例;在整个程序运行期间,全局对于某个类,只能产生一个这个类的对象。可以把这个类设计成"单例模式";注意:1.防止外部任意的实例化此类对象,将构造方法私有化;2.内部定义一个此类型的成员变量;并初始化;声明为:private static;3.为了封装性,将成员属性私有,提供公有方法获取这个对象;声明为:public static
单例模式:懒汉式。1.将构造方法私有化;2.提供私有成员,但不初始化;3.提供公有方法,先判断成员变量是否为null,如果为null,进行实例化。否则直接返回引用;注意:由于方法内操作步骤较多,另外有可能被多线程并发访问,所以加:synchronized关键字;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2