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
            }

     运行效果:

               

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

  • 相关阅读:
    浅谈 C++ 多态性
    浅谈 C++ 继承
    C++ 深拷贝浅拷贝
    C++ 斐波那契数列
    C++ 指针函数和lambda
    设计模式之单例模式
    结构体中内存对齐和补齐
    AWS S3文件存储工具类
    Java Springboot学习(三) Thymeleaf 、mybatis-plus
    Java Springboot学习(三) 整合springmvc、jdbc、mybatis
  • 原文地址:https://www.cnblogs.com/zhanjun/p/2837596.html
Copyright © 2011-2022 走看看