Skip to main content

Creational Design Patterns-Singleton Pattern


Singleton Pattern

The purpose of the Singleton pattern is to make sure that there is only one instance of a class and that there is a global access point to that object.
The pattern ensures that the class is instantiated only once and that all requests are directed to that one and only object.

The class needs to make the following modifications in order to implement the Singleton Pattern

  •  The constructor needs to be made private and add a private static constructor as well.
  •  A private static read-only object is required, that is internally instantiated using the private constructor.
  •  A public static property is required, that accesses the private object.


It is the public property  that is now visible to the caller.
All constructor requests for the class go to the property. The property accesses the private static object and
will instantiate it if it does not already exist.

Example:
 public  sealed class SingletonDemo
{
      private SingletonDemo()
      {
      }

    private static SingletonDemo _myobject = new SingletonDemo();
    public static SingletonDemo isInstatiated
    {
        get { return _myobject; }
    }
}
As soon as the class is instatiated, isInstatiated property is set be calling its private constructor.


Let’s call it to see how it works
protected void Page_Load(object sender, EventArgs e)
    {

        Response.Write("Simple Singleeton Demo");
        Response.Write("");
        if (SingletonDemo.isInstatiated != null)
        {
            Response.Write("Object initialized");
        }
     }


To further extend the demo, try to instatiate two objects for this class and see if they point to different references.

Although I assure you that it always creates just one instance, please try it yourself  to believe if I’m correct.

Hope this was helpful,

Till next time we connect…Happy Coding!!!

Comments

Popular posts from this blog

Authentication using Social Networking portals(Facebook, Gmail, and Yahoo)

There are tons of sites, which offer sign on using the social networking site credentials (Facebook, gtalk, twitter and the list continues).It can be termed a “SINGLE SIGNON” and offers a lot of benefits compared to traditional database authentication approach. However, not storing user credentials in the DB imposes an additional risk. How to track who all logged into the system. Now the question is, which approach to follow. The best approach is to use inbuilt asp.net users for storing the logging info about user activities and using single signon technique for authentication. This article will explore the approach and provide the details of implementation using some third party libraries and customizing it to the requirements. The Authentication will be done using the following networking portals Yahoo  Gmail Facebook    Special thanks to my friend Sumit Khandelwal, for implementation of Facebook part (in fact he did it all!!) Except Facebook, all other ca...

WPF Overview-Part-II

This post is in continuation to the last post. In this Post I’ll be exploring the Dependency Properties Dependency properties are similar to CLR properties with more advanced and complex features. The main difference between the CLR properties and dependency properties is, that the value of a normal .NET property is read directly from a private member in your class, whereas the value of a DependencyProperty is resolved dynamically when calling the GetValue() method that is inherited from DependencyObject . In case this description did not make sense, no need to worry, It will become clear by the time you reach end of this article. How the Value is Resolved in Dependency properties Every time a dependency property is accessed, it internally resolves the value by following the precedence from high to low. It checks if a local value is available, if not, check if a custom style trigger is active and I the similar manner continues until it finds a value. At last the default value is alwa...

HTML-5 Let's get started

Want to see html 5 in action, before actually diving into it, here's your chance. Go to this LINK and see the wonderful features that HTML-5 has to offer. Feeling overwhelmed, feel like getting hands dirty with this new kid on the block? Here's how to get started Hope this was useful.... Till next we connect.... Happy reading.....