黑马程序员技术交流社区

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

作者: 357016138    时间: 2014-7-17 18:02
标题: 单例设计模式
懒汉式和饿汉式的区别?
作者: LYP    时间: 2014-7-17 18:04
饿汉先加载,懒汉后面才加载。
作者: blue_sky    时间: 2014-7-17 21:26
这个问题,论坛里搜索一下吧!已经有很多很好的解答。。。
作者: a6511631    时间: 2014-7-18 09:36
涉及到安全问题的是,懒汉式。它们都属于单例设计模式,这个模式设计的最大特点就是,一个对象保证系统中只有一个实例,而且该实例易于外界访问。但是懒汉式的设计在多线程访问时,就不能保证系统中只会有一个实例了,就会出现安全问题,这个时候就用到同步了。
作者: Adjin    时间: 2014-7-18 09:48
不带你这么水贴的
作者: 张周飞    时间: 2014-7-18 10:01
/**
单例设计模式:
保证一个类仅有一个实例,并提供一个全局访问点。
1:构造方法私有化 private
2:在本类中声明一个本类对象 private static
3:给外部提供一个静态方法,获取对象的实例。

涉及到安全问题的是,懒汉式。它们都属于单例设计模式,这个模式设计的最大特点就是,一
个对象保证系统中只有一个实例,而且该实例易于外界访问。
但是懒汉式的设计在多线程访问时,就不能保证系统中只会有一个实例了,就会出现安全问题,这个时候就用到同步了

饿汉式-----比较着急 生成对象的时候就先定义出对象
懒汉式----后生成对象:在本类中声明一个本类对象先null   在获取对象的实例中生成对象,

:::举个例子::::
*/
public class SingletonDemo{
        public static void main(String[] args){
         singleton1 S = singleton1.getInstance();
         S.Bn();
         System.out.println();
                 singleton2 S1 = singleton2.getInstance();
                 S1.Bn();
  }
}
//-----------------饿汉式-------------------------//
class singleton1{
             //1:构造方法私有化!private
                         private singleton1(){}
                        //2:声明一个本类对象
                         private static singleton1 S=new singleton1();
             //3:给外部提供一个静态方法,获取对象的实例。
             public static singleton1 getInstance(){
                                 return S;
                         }
            public void Bn(){
                                System.out.println("我是饿汉式!!!!");
                        }


}
//-----------------懒汉式-------------------------//
class singleton2{
             //1:构造方法私有化!private
                         private singleton2(){}
                         //2:声明一个本类对象
                         private static singleton2 S1=null;//在本类中声明一个本类对象先null
             //3:给外部提供一个静态方法,获取对象的实例。
             public static singleton2 getInstance(){
                                 if(S1==null){
                                         S1=new singleton2(); //这时候才本类中new一个本类
                                       
                                 }
                                 return S1;
                         }
            public void Bn(){
                                System.out.println("我是懒汉式!!!!");
                        }


}



作者: 双皮奶    时间: 2014-7-18 10:06
整好看到这里,来学习一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2