单例模式学习
单例模式:顾名思义 就是这个类只能存在一个实例,
其特点: 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 }
运行效果:
说明每次声明的单例类都是相同的。
蜗牛之狂飙,继续努力,不要停止你的脚步!