• Singleton单件(创建型模式)


    单件模式要求一个类有且仅有一个实例.
     Singleon类:
     1using System;
     2
     3namespace Singleton
     4{
     5    /// <summary>
     6    /// Singleton 的摘要说明。
     7    /// </summary>

     8    public class Singleton
     9    {
    10     
    11            private static Singleton _factory; 
    12            private static Object _classLock = typeof(Singleton);
    13            private long _wipMoves;
    14            private Singleton()
    15            {
    16                _wipMoves = 0;
    17            }

    18            public static Singleton GetFactory()
    19            {
    20                lock (_classLock)
    21                {
    22                    if (_factory == null)
    23                    {
    24                        _factory = new Singleton();
    25                    }

    26                    return _factory;
    27                }

    28            }

    29            public void RecordWipMove()
    30            {
    31                lock (_classLock)
    32                {
    33                    _wipMoves++;
    34                }

    35            }

    36            // for the Aster star press example; not implemented
    37            public void CollectPaste() 
    38            {
    39                Console.Write(_wipMoves+"\n");
    40            }

    41
    42            /// <summary>
    43            /// Return an example list of "up" machines, supporting "ShowConcurrentWhile"
    44            /// and other examples).
    45            /// </summary>
    46            /// <returns>an example list of "up" machines</returns>

    47             
    48        }

    49    }

    50
    51 
    52

    主程序:
     1using System;
     2
     3namespace Singleton
     4{
     5    /// <summary>
     6    /// Class1 的摘要说明。
     7    /// </summary>

     8    class Class1
     9    {
    10        /// <summary>
    11        /// 应用程序的主入口点。
    12        /// </summary>

    13        [STAThread]
    14        static void Main(string[] args)
    15        {
    16            //
    17            // TODO: 在此处添加代码以启动应用程序
    18            //
    19
    20            Singleton singleton =Singleton.GetFactory();
    21            singleton.RecordWipMove();
    22            singleton.RecordWipMove();
    23            
    24            Singleton singleton1 =Singleton.GetFactory();
    25            singleton1.RecordWipMove();
    26            singleton1.RecordWipMove();
    27        
    28            singleton.CollectPaste();
    29            singleton1.CollectPaste();
    30            Console.WriteLine(object.ReferenceEquals(singleton, singleton1) == true);
    31
    32            Console.ReadLine();
    33        }

    34    }

    35}

    36
  • 相关阅读:
    ThreadLocal的分享
    remot debug
    小计-git
    入坑HttpServletRequest.getParameterMap
    基于线程池和连接池的Http请求
    spring,maven,dubbo配置
    springMVC,mybatis配置事务
    寻找数组的主元素问题的解法
    关于最大子序列和问题以及相关衍生问题的分析
    关于选择问题的一些思路.
  • 原文地址:https://www.cnblogs.com/walker/p/479663.html
Copyright © 2020-2023  润新知