JAVA设计模式之单件模式

来源:互联网 发布:mac怎么启用flash 编辑:程序博客网 时间:2024/06/05 17:20

     单例模式的定义是:单例模式确保某个类只有一个实例,而且自行实例化,并且向整个系统提供该实例(全局只有一个访问点),这个类就是单例类。

     由定义我们知道单例模式的特点:

      1>单例类只能有一个实例。
      2>单例类必须自己创建自己的唯一实例。
      3>单例类必须给所有其他对象提供这一实例。

     那么我们就会知道单例类中的工厂方法是静态方法,

  public class Single{

     private static Single singlee=new Single();

     private Single(){}


       public static Single getSinglee(){  //全局入口

     return singlee;

}

}


  public class Single{

     private static Single singlee=null;

     private Single(){}


     public static Single getSinglee(){  //全局入口

     if(singlee==null){

     singlee=new Single();

}

   return singlee;

}

}


        我写了两个方法大家可以从中看出来这两个方法的不同吗,对的实例化的对象的地方不一样,这就是我们说的饿汉模式和懒汉模式第一个为饿汉模式第二个为懒汉模式,一个是在调用时就已经创建好实例了但是会浪费一部分空间,而另外一个正好相反在定义时没有实例化但是在使用的时候才会实例化崔然节省了空间但是浪费了判断的时间所以懒汉模式是以空间换时间的模式,饿汉模式是以时间按换空间的模式。

       双重检查加锁
     “双重检查加锁”机制的实现会使用关键字volatile,它的意思是:被volatile修饰的变量的值,将不会被本地线程缓存,所有对该变量的读写都是直接操作共享内存,从而确保多个线程能正确的处理该变量。
    

public volatile class Single{

     private static Single singlee=null;

     private Single(){}


     public static Single getSinglee(){  //全局入口

     if(singlee==null){

     singlee=new Single();

}

   return singlee;

}

}

   我们使用单例模式的时候最重要的是要看看他是否是唯一的!
0 0
原创粉丝点击