设计模式---singleton

来自msdn的实现:

using System;
public sealed class Singleton

{   

 private static volatile Singleton instance;  

  private static object syncRoot = new Object();
   private Singleton() {}
   public static Singleton Instance   

 {    

   get      

 {         

 if (instance == null)      

    {           

  lock (syncRoot)           

  {           

     if (instance == null)          

         instance = new Singleton();      

       }         

 }
         return instance;  

     }  

  }

}

 

windows azure cloud 中一段代码的实现:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.IO;

using System.Net;

using Microsoft.WindowsAzure;

using Microsoft.WindowsAzure.ServiceRuntime;

using Microsoft.WindowsAzure.StorageClient;

using GuestBook_Data;

 

namespace GuestBook_WebRole

{

    public partial class _Default : System.Web.UI.Page

    {

        private static bool storageInitialized = false;

        private static object gate = new Object();      

        private static CloudQueueClient queueStorage;     

        private void InitializeStorage()

        {

            if (storageInitialized)

            {

                return;

            }

            lock (gate)

            {

                if (storageInitialized)

                {

                    return;

                }

                try

                {

                    // read account configuration settings

                    var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

                    // create blob container for images

                    blobStorage = storageAccount.CreateCloudBlobClient();

                    CloudBlobContainer container = blobStorage.GetContainerReference("guestbookpics");

                    container.CreateIfNotExist();

                    // configure container for public access

                    var permissions = container.GetPermissions();

                    permissions.PublicAccess = BlobContainerPublicAccessType.Container;

                    container.SetPermissions(permissions);

                    // create queue to communicate with worker role

                    queueStorage = storageAccount.CreateCloudQueueClient();

                    CloudQueue queue = queueStorage.GetQueueReference("guestthumbs");

                    queue.CreateIfNotExist();

                }

                catch (WebException)

                {

                    throw new WebException("Storage services initialization failure. "

                        + "Check your storage account configuration settings. If running locally, "

                        + "ensure that the Development Storage service is running.");

                }

                storageInitialized = true;

            }

        }

    }

}

 

 

posted @ 2011-12-09 10:49  xiaoshiyilang  阅读(157)  评论(0编辑  收藏  举报