Skip to main content

JavaScript - Singleton Pattern

The singleton design pattern is probably the simplest and most common pattern in JavaScript.

So why should you use the singleton pattern?
  • Encapsulation of members & functions
  • Creates its own Namespace
  • A singleton is a single instance object
  • Encourages code reuse
  • Improves readability because you can logically organise your code

The point of a singleton is to only have one instance. A shopping cart is a good example of something that you may want only a single instance of at one time.


The simplest form of Singleton is an object literal. This loose form of Singleton cannot be instantiated. All of the members are now accessible through the Singleton variable, accessible through dot notation.
varmyCart = {
   self: this,

   totalCost: 0,

   totalQty: 0,

   cart: {},

   getCart: function(){ },

   updateCart: function(){ }

};

alert( "Total cost: $"+ myCart.totalCost );

By using closures, we can create Private and Public Members and Functions. This pattern is more commonly called the Module Pattern.

 var myCart = function(){
    // Private

    var self = this;

    var totalCost = 0;

    var totalQty = 0;

    var cart = {};

    return {

        // Public

        getCart: function(){ },

        updateCart: function(){ }

    };

}();

Comments

  1. May be adding discussions about engineering softwares like latex or programming languages like C/C++/fortran etc could help.

    ReplyDelete
    Replies
    1. Thanks for the suggestion. But it would be difficult to maintain such discussion on blog. I feel that it would be better to start a forum for that. Consider stackoverflow.com, its a very nice platform to get everything answered properly and in less time

      Delete

Post a Comment

Popular posts from this blog

Reverse Engineering : Extract contents from .img file

Unyaffs is a program to extract files from a YAFFS2 file system image. Currently it can only extract images created by mkyaffs2image. Download the source from here . Compiling : Extract the contents into a suitable place and run the following command make Usage : unyaffs [options] <image_file_name> [<extract_directory>] Options: -d detection of flash layout, no extraction -b spare contains bad block information -c <chunk size> set chunk size in KByte (default: autodetect, max: 16) -s <spare size> set spare size in Byte (default: autodetect, max: 512) -t list image contents -v verbose output -V print version Source: Official github repository

Mac Yosemite : Ugly turned out to be Uglier and Ugliest

You might have read my review on Mac OSX Yosemite , The Good, bad and ugly. Now it turned out to be UGLIEST. No more words. Here's the image. If you are on Yosemite, you might be familiar with it. Most of the times, you get stuck on boot logo. I've seen complaints regarding it saying that fellow members are ignorant of it and they deny such possibility, even though many are still facing it. Workarounds suggested by our online friends: Just reboot your mac as many times it takes to your desktop. Boot into safe mode, by holding SHIFT and then reboot. Comment your workaround below, mine is the first one. If you are still on Mavericks, be there till Apple provides a fix for this.

Reverse Engineering : Android Dex files to Class files

In my previous post, we have seen how to extract the contents of img file . After extraction, you will find that most of the files have ".dex" extension. These are Compiled Android application code files. In order to convert them into executable format (.class or .jar), you can use dex2jar tool. Extract it to a proper location and open the terminal to this location. Now run the following command: ./d2j-dex2jar.sh <Path-to-dex_file> It will bundle the dex files into a jar file, and stores it in the current directory. dex2jar can also be used to convert dex files into variuos other formats. For detailed info, click here .