CSC/ECE 517 Fall 2010/ch3 3f DF: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 69: Line 69:
== References ==
== References ==


[http://ruby-doc.org/stdlib/libdoc/singleton/rdoc/index.html link]
[http://ruby-doc.org/stdlib/libdoc/singleton/rdoc/index.html http://ruby-doc.org/stdlib/libdoc/singleton/rdoc/index.html]

Revision as of 03:45, 5 October 2010

The Singleton pattern in static and dynamic languages


Introduction

Text overview

UML Diagram

Static Language Implementation

C++

class MySingleton
{
  public:
    static MySingleton* Instance()
    {
      if(s_pSingletonObject == NULL)
        s_pSingletonObject = new MySingleton;
				
      return s_pSingletonObject;
    }
		
    static void Destroy()
    {
      if(s_pSingletonObject != NULL)
      {
        delete s_pSingletonObject;
        s_pSingletonObject = NULL;
      }
    }

    //Begin interface functions
    //...
    //End interface functions
		
  private:
    //Direct access to the constructor/destructor is prohibited
    MySingleton() {}
    virtual ~MySingleton() {}
		
    static MySingleton* s_pSingletonObject;
};

MySingleton::s_pSingletonObject = NULL;

Dynamic Language Implementation

Ruby

Implementation

  Singleton pattern source code

Usage

class MySingleton
  include Singleton

  # Begin interface methods
  # ...
  # End interface methods
end

References

http://ruby-doc.org/stdlib/libdoc/singleton/rdoc/index.html