设计模式之单例模式

2018-01-12  本文已影响7人  AJI大侠

什么是单例模式

  1. 饿汉模式
public class MyWife
{
    // singleton
    public MyWife() {}
    private static final MyWife myWife = new MyWife();
    public static MyWife getWife()
    {
        return myWife;
    }
}
  1. 懒汉模式
public class MyWife
{
    private static MyWife myWife;
    public MyWife (){};
    private static MyWife getWife()
    {
        if (myWife== null)
        {
            myWife= new MyWife ();
        }
        return myWife;
    }
}
  1. 懒汉模式线程安全,简单点的直接加同步关键字synchronized
public class MyWife
{
    private static MyWife myWife;
    public MyWife (){};
    private static synchronized MyWife getWife()
    {
        if (wife == null)
        {
            myWife= new MyWife ();
        }
        return myWife;
    }
}
  1. 双重检验锁
public class MyWife 
{
 private volatile static MyWife myWife;

 private MyWife(){ }

 public static MyWife getWife()
 {
     if (myWife == null) 
     {
         synchronized(MyWife.class)
         {
             if (myWife == null) 
             {
                 myWife = new MyWife();
             }
         }
     }
     return myWife;
 }
}

5 静态内部类的单例模式

public class MyWife
{
    private static class WifeHodler
    {
        private static final MyWife myWife = new MyWife();
    }
    
    public static MyWife getMyWife()
    {
        return WifeHodler.myWife;
    }
}
  1. 枚举的单例模式
public enum MyWife
{
    INSTANCE;
    // 自定义任意的方法
    public void whateverMethod()
    {
        
    }
}

我的博客

上一篇 下一篇

猜你喜欢

热点阅读