设计模式:解决某一类问题最行之有效的方法。

Java中有23种设计模式。

单例模式:解决一个类在内存中只存在一个对象。

如何用代码实现?

1.将构造函数私有化;

2.在类中创建一个本类对象;

3.提供一个方法可以获取到该对象。

单例模式有两种方法实现:

一、懒汉式

对象是方法被调用时才初始化。

Single类进内存,对象还没有存在,只有调用了getInstance()方法时,才建立对象。

class Single{

  private static Single s=null;

  private Single(){}

  public static Single getInstance()

  {

    if(s==null){

      s=new Single();

    }

    return s;

  }

}

二、饿汉式

先初始化对象,Single类一进内存,就已经创建好了对象。
class Single{

  private static Single s=new Single();

  private Single(){}

  public static Single getInstance(){

    return s;

  }

}

开发一般用饿汉式,因为它安全简单。

如果用懒汉式,当多个程序同时访问时,就有可能出现问题,解决方案:

方案一:

class Single{

  private static Single s=null;

  private Single(){}

  public static synchronized Single getInstance(){//加同步锁,一次只能进来一个,缺点:判断次数太多,影响速度。

    s=new Single();
  }

  return s;

}

方案二:

class Single{

  private static Single s=null;

  private Single(){}

  public static Single getInstance(){

    if(s==null){

      Synchronized(Single.class){

        if(s==null){

 /*

cpu轮流切换运行程序,当A进来,cpu切过去了,没有运行A的时候,A就被挂起,B就不能进来了,因为有同步锁。当C进来的时候,此时s!=null,就不会判断同步锁问题,这样减少了判断次数,速度会快点。

*/

          s=new Single(); 

        }

      }

    return s;

    }

  }

}

posted on 2015-06-22 13:32  Joanna.Yan  阅读(654)  评论(1编辑  收藏  举报