zoukankan      html  css  js  c++  java
  • “Singleton”模式

    下面给出三种实现方法,分别给出优缺点。

    方法一:

    public sealed class Singleton
    {
    private static readonly Singleton instance = new Singleton();

    private Singleton(){}

    public static Singleton Instance
    {
    get
    {
    return instance;
    }
    }
    }


    优点:简单明了
    缺点:耗费资源

    方法二:

    public sealed class ClassicSingleton
    {
    private static ClassicSingleton instance;
    private static object syncRoot = new Object();

    private ClassicSingleton() { }

    public static ClassicSingleton Instance
    {
    get
    {
    if (instance == null)
    {
    lock (syncRoot)
    {
    if (instance == null)
    {
    //...custom code
    instance = new ClassicSingleton();
    }
    }
    }

    return instance;
    }
    }
    }


    优点:节省资源
    缺点:代码冗长

    方法三:

     

    优点:既节省资源,又简单明了
    缺点:线程不安全???

    方法四:

    public class Singleton
    {
    private static Singleton instance;
    // Added a static mutex for synchronising use of instance.
    private static System.Threading.Mutex mutex;
    private Singleton() { }
    static Singleton()
    {
    instance
    = new Singleton();
    mutex
    = new System.Threading.Mutex();
    }

    public static Singleton Acquire()
    {
    mutex.WaitOne();
    return instance;
    }

    // Each call to Acquire() requires a call to Release()
    public static void Release()
    {
    mutex.ReleaseMutex();
    }
    }

    优点:既节省资源,又简单明了,线程也同步了(一箭三雕
    缺点:轻微冗长

    说明:前面三种方法都没有线程同步(真的需要同步吗?)

    public sealed class Singleton
    {
    static Singleton(){Instance = new Singleton();}

    private Singleton(){}

    public static Singleton Instance{get; private set;}
    }

     

    http://www.cnblogs.com/k-sharp/archive/2010/05/26/1744121.html

  • 相关阅读:
    Win10系列:VC++绘制几何图形3
    Win10系列:VC++绘制几何图形2
    二进制的编码
    win10下更新anaconda和pip源
    在win10上安装FFmpeg
    git设置代理模式,仅为github设置代理
    python3的pip3安装
    texlive2019安装
    ubuntu中安装python3和pip
    macbook安装win10
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1745427.html
Copyright © 2011-2022 走看看