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

               单例模式:顾名思义 就是这个类只能存在一个实例,

               其特点: 1.单例类只能有一个实例,

                            2.单例类必须自己创建自己的唯一实例,

                            3.单例类必须给所有其他对象提供这一实例。

     代码:定义 LoadBalancer 类为单例类

    class LoadBalancer
        {
            private static LoadBalancer Balancer;
            private ArrayList array_listserver = new ArrayList();
            private Random random = new Random();
    
            protected LoadBalancer()
            {
                array_listserver.Add("服务器1");
                array_listserver.Add("服务器2");
                array_listserver.Add("服务器3");
                array_listserver.Add("服务器4");
            }
    
            public static LoadBalancer GetLoadBalancer()
            {
                if (Balancer == null)
                {
                    Mutex mutex = new Mutex();
                    mutex.WaitOne();
                    Balancer = new LoadBalancer();
                    mutex.Close();
    
                }
                return Balancer;
            }
            public string Server
            {
                get
                {
                    int r = random.Next(array_listserver.Count);
                    return array_listserver[r].ToString();
                }
            }
        }

     主函数:

    static void Main(string[] args)
            {
                //单例模式
                #region 
                LoadBalancer b1 = LoadBalancer.GetLoadBalancer();
                LoadBalancer b2 = LoadBalancer.GetLoadBalancer();
                LoadBalancer b3 = LoadBalancer.GetLoadBalancer();
                LoadBalancer b4 = LoadBalancer.GetLoadBalancer();
    
                if ((b1 == b2) && (b2 == b3) && (b3 == b4))
                {
                    Console.WriteLine("同步运行相同的实例对象");
                    Console.WriteLine(b1.Server);
                    Console.WriteLine(b2.Server);
                    Console.WriteLine(b3.Server);
                    Console.WriteLine(b4.Server);
    
                }
                #endregion
            }

     运行效果:

               

        说明每次声明的单例类都是相同的。

  • 相关阅读:
    ubuntu升级显卡驱动
    __slots__属性,声明实力属性名字列表
    isinstance 与 type 的区别
    conda使用技巧
    卷积神经网络参数
    apache nginx php不显示版本号
    30个实用的Linux find命令示例
    账号的管理的那点事
    Linux 命令整理 —— 基本操作
    Linux 命令整理 —— 用户管理
  • 原文地址:https://www.cnblogs.com/zhanjun/p/2837596.html
Copyright © 2011-2022 走看看