Home » Interview Questions » Interviews » Story Details
Printable Version

Interview Question: Singleton Design Pattern

by Kamal Rawat on Dec 14, 2011

What is Singleton Design Pattern. Give its implementation in C++
Comments: 0    Views: 1261

MCN Professionals | Interview Question of the day

To receive one interview question in your mailbox daily, please subscribe to "A Question A Day" at MCN Professionals home page.
-----------------------------------------------------------------------------------------------------------------------------------------

Today's Question:

What is Singleton Design Pattern? How will you implement it? 

Solution:

Singleton patterns are used, when you want to allow creation of only one instance(object) of a particular class. Such classes (which allow only single object to be created) are called Singleton Classes. For example, there is only one Window manager, so a class implementing Windows Manager, should be allowed to be instantiated only once. 

One way to allow only one object creation is to have everything in the class (data & methods) static and global. Because static members are available at class level and have only a single copy. But this is not an Object Oriented Design Methodology plus this will not disallow creation of objects, we can create as many projects of a class, and the responsibility to disallow multiple objects should lie with the class and not with the user. User should be free to use the class, if an attempt is made to create multiple objects of the class, then it should result in a compile-time error.

Singleton Pattern is part of the Creational Design Pattern because it effects the way in which an object of a class is getting created.

Implementation of Singleton Design Pattern:
class Singleton 
{

public
:

static aSingletonClass *getInstance()
{

//The object is created when it is called first
if(!_instance)
_instance = new Singleton;
return
_instance;
}
    static void deleteInstance()
{

if
(_instance)
delete
_instance;
_instance = NULL; //To avoid memory leak
}

private
:
static Singleton *instance_;

Singleton(); // Private Constructor

~Singleton() {}; // Private Destructor, noone can delete the object explicitly
     // Preventing creation of object by Copy or by assignment.
Singleton(const Singleton&);
Singleton& operator=(const Singleton&);
};
Note that the Constructor (default & Copy constructor) and overloaded assignment operator are only declared and not defined, but the destructor is defined. This is explained below:

If we define the constructor then object of the class can be created in a friend class or friend function. Though we have not yet declared any function or class as friend, but if we do , our code should not stopped functioning.

The destructor is defined, because we need to destroy the object (the only object) which is getting created.


-----------------------------------------------------------------------------------------

Interview Questions Archive:

         To see all the questions in the category click here...

Post a Comment
*
DevExpress PowerBuilder Web Development Windows Development Languages Software Engineering Databases
iPhone Architecture Secutiry UML & Modeling Operating Systems Networking Testing
Graphics Design Project Management Hardware Open Source Games Development Business Intelligence Visual Studio LightSwitch 2011
MonoDevelop Visual Studio 2010 ASP.NET HTML, DHTML XML PHP JavaScript
Silverlight Web Services WCF Windows Forms WPF Windows Services Dynamic Link Libraries
ActiveX COM, DCOM, ATL C# VB.NET C++ F# Java
Pascal SQL Server Oracle DB2 MS-Access Windows Servers Windows
Linux Unix SAP LINQ .NET Framework ADO.NET Reporting
Crystal Reports SQL Server Reporting Services Igenda Reports Active Reports Adobe Fireworks Arrays & Collections Hosting
Future Trends Android Windows Phone Smart Devices Business M&A Investment & Funding
Web Browsers Internet Explorer Firefox Safari Common Entrepreneurs Students
Consulting Wiki Gadgets MobileMe iCloud iOS Social Media
Facebook Twitter LinkedIn Google+ Microsoft Kinect XBox
Wii Playstation DirectX i OS OS X CIO, CTO, CEO Windows 8
Web Design Expression Blend 4 Photoshop CS5 Creative Suite 5.5 Expression Web 4 Expression Studio 4 Creative Suite® 5.5 Design
Creative Suite 5.5 Web Creative Suite 5.5 Production Startups Funding M&A Laptops Smart Phones
Desktops Cameras & Camcorders Netbooks Tablets Virtualization Microsoft Surface WordPress
Software Products Cloud Computing Current Affairs Technology TV TV
Earnings XAML E-Commerce MonoTouch Mono for Android Deals Electronics
Mobile Phone Laptop Tablet Book Computer Press Releases Reviews
Products Books Companies Windows Azure SQL Azure Interviews Mac
Web Browsers Symbian Windows Forms WPF Windows Services HTML 5 Office 365
SharePoint 2010 Exchange Server Adobe Visual Studio 2012 iPad Flex / Flash Games
Windows 9
X
 Login
Please login to submit a new post, reply and edit exiting posts, see user profiles, and access more features. If you are not a registered member, Register here.
User Id / Email:
Password:  
Forgot Password | Forgot UserName