Singleton(单态)

Singleton(单态)

中心思想:

是保证在Java应用程序中,一个类Class只有一个实例存在


主要作用:
Singleton
模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。

使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。 

Singleton
也能够被无状态化。提供工具性质的功能,


具体操作步骤:
1,private构造方法
2,private静态成员引用
3,public的静态方法提供给外部使用。

 1 public   class  Singleton  {
 2    private  Singleton() {}
 3    // 在自己内部定义自己一个实例,是不是很奇怪?
 4    // 注意这是private 只供内部调用
 5 private   static  Singleton instance  =   new  Singleton();
 6
 7    // 这里提供了一个供外部访问本class的静态方法,可以直接访问  
 8    public   static  Singleton getInstance()  {
 9      return  instance;   
10    }
 
11 }
 
12

上面是饿汉式,可以多线程。

public class LazySingleton
{
  /**
     * @label Creates
     */
    private static LazySingleton m_instance = null;
   
    private LazySingleton() { }

    (synchronized )public static LazySingleton getInstance()
    {
     if (m_instance == null)
     {
         m_instance = new LazySingleton();
     }
     return m_instance;
 }

  
}



只适合单线程的条件下,如果使用多线程的话,那么必须采用synchronized来修饰方法,使得每个线程进入此方法前都要等待别的线程离开此方法。也就是说不会有2个线程同时进入方法。

你可能感兴趣的:(Singleton(单态))