Skip to main content

Design Patterns 2 : Singleton

Design Patterns 2 : Singleton 


So welcome with the second post on Design patterns and this is gonna be about the Singleton Pattern. In the last post you might remember how I have mentioned the birth of the design patterns and how Developers used it for their convenience and standardization of codes. This will be the first design pattern that will be discussed. 
The word Singleton means a Single person. From that itself you can take the Idea about the Singleton.
If you remember the previous post (The table with the dimensions Scope and Purpose) you'll see that Singleton belongs to the Creational Design Pattern and to the scope of Objects. Let's discuss this further.

The Singleton Design Pattern

Singleton is one of the simplest design Patterns out there. The Singleton Design Pattern is used when once instance of an object is used throughout the entire life span of the program. A singleton design associates with a single class and only one single object is initiated from that class, in the program we make sure that we are having a way to access that object without creating a new object.
It'll we easy if we look at the implementation rather than trying to explain it in here.

Implementation of Singleton Design Pattern


With few simple steps we can implement a simple program with Singleton Design pattern

  • Create an private constructor so that no one else can create object explicitly.
  • By using Static Methods we can provide a global way to access the instance so there is no any necessity to create objects.
Let's get to the Coding.

First I'll Create a class with an private constructor disabling  explicit creation of objects.


public class MySingletonClass {
 
 //Create the only available instance of the MySingletonClass
 //make it private and static
 private static MySingletonClass SingletonInsance = new MySingletonClass();

 // making the constructor private
 private MySingletonClass(){}
 
 //Since the object is private we need a method to return the object
 //method needs to be public and static
 
 public static MySingletonClass ReturnInstance(){
  return SingletonInsance;  
  // returns the only available object
 }
 
 //A methods to test the Singleton Class
 public static void write() {
  System.out.println("This is Anjula Testing the Singleton");
 }
}

To test this one we have to create another class.
For testing purpose let's create a class and try to create a MySingletonClass Object



You can see there that It'll be issuing an error saying that constructor is not visible. That is because we made it so by turning it to a private constrictor


public class SingletonTesterClass {

 public static void main(String[] args) {
  //class to get the singleton object
  
  // trying to create an object explicitly 
  /*MySingletonClass msc = new MySingletonClass();*/
  
  // get the only available instance
  MySingletonClass msc;
  msc = MySingletonClass.ReturnInstance();

  //test for the write method
  msc.write();
 }

}


. The output will be This is Anjula Testing the Singleton

Actual Implementation of Singleton Pattern

A few months ago I went for an Internship Interview and the First question regarding the Design Patters was this. Name some actual implementations of Singleton Design Pattern.
Instances:

  • Clip Boards
  • Windows Registry
  • Sharing one device with multiple users.
  • FIle Systems.

That is it with the Singleton Design Pattern. Lets discuss something else in next post...



Popular posts from this blog

Natural Language Processing with Python NLTK part 5 - Chunking and Chinking

Natural Language Processing Using regular expression modifiers we can chunk out the PoS tagged words from the earlier example. The chunking is done with regular expressions defining a chunk rule. The Chinking defines what we need to exclude from the selection. Here are list of modifiers for Python: {1,3} = for digits, u expect 1-3 counts of digits, or "places" + = match 1 or more ? = match 0 or 1 repetitions. * = match 0 or MORE repetitions $ = matches at the end of string ^ = matches start of a string | = matches either/or. Example x|y = will match either x or y [] = range, or "variance" {x} = expect to see this amount of the preceding code. {x,y} = expect to see this x-y amounts of the preceding code source: https://pythonprogramming.net/regular-expressions-regex-tutorial-python-3/ Chunking import nltk from nltk.tokenize import word_tokenize # POS tagging sent = "This will be chunked. This is for Test. World is awesome. Hello world....

Natural Language Processing with Python NLTK part 1 - Tokenizer

Natural Language Processing Starting with the NLP articles first we will try the  tokenizer  in the NLTK package. Tokenizer breaks a paragraph into the relevant sub strings or sentences based on the tokenizer you used. In this I will use the Sent tokenizer, word_tokenizer and TweetTokenizer which has its specific work to do. import nltk from nltk.tokenize import sent_tokenize, word_tokenize, TweetTokenizer para = "Hello there this is the blog about NLP. In this blog I have made some posts. " \ "I can come up with new content." tweet = "#Fun night. :) Feeling crazy #TGIF" # tokenizing the paragraph into sentences and words sent = sent_tokenize(para) word = word_tokenize(para) # printing the output print ( "this paragraph has " + str(len(sent)) + " sentences and " + str(len(word)) + " words" ) # print each sentence k = 1 for i in sent: print ( "sentence ...

Natural Language Processing with Python NLTK part 6 - Named Entity Recognition

Natural Language Processing - NER Named entities are specific reference to something. As a part of recognizing text NLTK has allowed us to used the named entity recognition and recognize certain types of entities. Those types are as follows NE Type Examples ORGANIZATION Georgia-Pacific Corp. ,  WHO PERSON Eddy Bonte ,  President Obama LOCATION Murray River ,  Mount Everest DATE June ,  2008-06-29 TIME two fifty a m ,  1:30 p.m. MONEY 175 million Canadian Dollars ,  GBP 10.40 PERCENT twenty pct ,  18.75 % FACILITY Washington Monument ,  Stonehenge GPE South East Asia ,  Midlothian Source:  http://www.nltk.org/book/ch07.html Simple example on NER: import nltk from nltk.tokenize import word_tokenize, sent_tokenize para = " America is a country. John is a name. " sent = sent_tokenize(para) for s in sent: word = word_tokenize(s) tag = nltk . pos_tag(word) n...