zoukankan      html  css  js  c++  java
  • 单例模式

    单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。显然单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

    通常,习惯性的把单例模式分为两种,饿汉模式和饱汉模式

    饿汉模式:

    class ehanmoshi

               {

                  //饿汉模式 (不管后面用不用,一来就先分配空间)

                   public static ehanmoshi ehan = new ehanmoshi();

                   private ehanmoshi(){ }

                   public static ehanmoshi GetSingleTon()

                   {

                     return ehan;

                   }

               } 

    饱汉模式:

    class baohanmoshi

               {

                   //饱汉模式  要用的时候才分配空间

                   public static int baohanNum = 0;

                   public static baohanmoshi baohan;

                   private int Name;

                   private baohanmoshi(){ }

                   public static baohanmoshi GetClass()

                   {

                     if (baohan == null)

                      {

                         baohan = new baohanmoshi();

                         baohanNum++;

                         baohan.Name = baohanNum;

                       }

                     return baohan;

                //一把锁机制

                //lock (new object())

                //{

                //    if (baohan == null)

                //    {

                //        baohan = new baohanmoshi();

                //        baohanNum++;

                //        baohan.Name = baohanNum;

                //    }

                //    return baohan;

                //}

     

                //两把锁机制

                //if (baohan == null)

                //{

                //    lock (new object())

                //    {

                //        if (baohan == null)

                //        {

                //            baohan = new baohanmoshi();

                //            baohanNum++;

                //            baohan.Name = baohanNum;

                //        }

                //        return baohan;

                //    }

                //}

                    }

                   public int GetName() {

                    return Name;

                   }

               }

  • 相关阅读:
    SOJ 2785_Binary Partitions
    Codeforces Round #328 (Div. 2)
    C++ fill 和memset
    SOJ 2749_The Fewest Coins
    Codeforces Round #327 (Div. 2)
    TYVJ P1013 找啊找啊找GF Label:动态规划
    TYVJ 1014 乘法游戏
    TYVJ 1011 NOIP 2008&&NOIP 2000 传纸条&&方格取数 Label:多线程dp
    错误集合
    TYVJ P1038/P1039 忠诚 标签:线段树
  • 原文地址:https://www.cnblogs.com/dongwenhua/p/9001009.html
Copyright © 2011-2022 走看看