黑马程序员技术交流社区

标题: 设计模式 [打印本页]

作者: 银哥    时间: 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