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

    1.单例模式

    它的特点是:

    1.构造参数是私有的,可以防止其他类实例化它,即一个类只有一个实例

    2.用一个静态变量来保存类的实例

    3.提供一个全局访问点,使用一个公有的静态方法来实例化它

    下面是一个支持多线程的单例模式代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace danlimoshi
    {
        public class Danli
        {
            //私有的构造函数,它不可以在外边创建实例
            private Danli()
            { }
            private static Danli danli;
            private static object x=new object();//定义一个互斥信号量,保证多线程访问该静态实例的唯一性
            public static Danli GetDanli()//定义一个公共静态方法来获取对象实例
            {
                if (danli == null)//首先判断对象是否为空,如果不为空就不需要加锁了,节省时间
                {
                    lock (x)//保证多线程访问该静态实例的唯一性
                    {
                        if (danli == null)
                        {
                            danli = new Danli();
                        }
    
                    }
                }
                return danli;
            }
            public void show()
            {
                Console.WriteLine("工作中!!!");
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Danli danli = Danli.GetDanli();
                danli.show();
                Console.WriteLine("{0}",danli.GetHashCode());
    
                Danli danli2 = Danli.GetDanli();
                danli2.show();
                //哈希函数用于快速生成一个与对象的值相对应的数字(哈希代码)
                Console.WriteLine(danli2.GetHashCode());//两个对象的哈希函数一样,说明在内存中的地址一样,只有一个实例
               //比较两个对象是否相同
                Console.WriteLine(danli.Equals(danli2));
            }
        }
    }
    单例模式
  • 相关阅读:
    jQuery层级选择器
    jQuery基本选择器
    What is the difference between try/except and assert?
    glove 安装错误
    Windows10+anaconda,python3.5, 安装glove-python
    GloVe:另一种Word Embedding方法
    PyTorch在NLP任务中使用预训练词向量
    理解GloVe模型(Global vectors for word representation)
    word2vec 中的数学原理详解(二)预备知识
    Python zip() 函数
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4430240.html
Copyright © 2011-2022 走看看