码迷,mamicode.com
首页 > 其他好文 > 详细

C# 中的Singleton模式

时间:2014-07-06 22:12:20      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:blog   os   代码   line   div   new   

一般写Singleton基本都是一下这个套路

class Singleton 
{
	public static Singleton  instance;

	private Singleton()
	{
	
	}

	public static Singleton Getinstance()
	{
		if(instatnce == null)
		{
			instance = new Singleton();
		}

		return instance;
	}
}

但是今天学到一个C#独有的Singleton写法:

class sealed Singleton 
{
	public static readonly Singleton  instance = new Singleton();

	private Singleton()
	{

	}
}

这种写法简单实用,大大减少了代码量。

但是缺点就是无法被继承,并且启动时就被初始化,无法延迟初始化。

 

我以这种写法,写了一个简单的LoadBalance类。

public sealed class LoadBalancer
{
    public static readonly LoadBalancer balancer = new LoadBalancer();
    private ArrayList servers = new ArrayList();
    private Random random = new Random();

    protected LoadBalancer() 
    {
        servers.Add("SERVER I");
        servers.Add("SERVER II");
        servers.Add("SERVER III");
        servers.Add("SERVER IV");
        servers.Add("SERVER V");
    }

    public string Server 
    {
        get 
        {
            int i = random.Next(servers.Count);
            return servers[i].ToString();
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        LoadBalancer b1 = LoadBalancer.balancer;
        LoadBalancer b2 = LoadBalancer.balancer;
        LoadBalancer b3 = LoadBalancer.balancer;
        LoadBalancer b4 = LoadBalancer.balancer;

        if (b1 == b2 || b2 == b3 || b3 == b4)
            Console.WriteLine("Same instance");
        Console.WriteLine(b1.Server);
        Console.WriteLine(b2.Server);
        Console.WriteLine(b3.Server);
        Console.WriteLine(b4.Server);

        Console.ReadLine();
    }
}

调用的结果是:

 

Same instance

SERVER III

SERVER I

SERVER IV

SERVER IV

 

C# 中的Singleton模式,布布扣,bubuko.com

C# 中的Singleton模式

标签:blog   os   代码   line   div   new   

原文地址:http://www.cnblogs.com/nonkicat/p/3824503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!