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
            }

     运行效果:

               

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

  • 相关阅读:
    lombok自定义扩展实践
    Java8新特性之重复注解(repeating annotations)
    PowerMockito单元测试中的Invalid use of argument matchers问题详解
    sublimerge
    springboot Properties加载顺序源码分析
    关于U盘启动操作系统《30天自制操作系统》
    操作系统学习基本概念汇总
    使用图灵机器人高速开发智能聊天机器人
    LeetCode89:Gray Code
    Android Studio开发Android问题集【持续更新】
  • 原文地址:https://www.cnblogs.com/zhanjun/p/2837596.html
Copyright © 2011-2022 走看看