Difference between revisions of "Singleton"
(→Sample Code) |
(→Sample Code) |
||
Line 33: | Line 33: | ||
} | } | ||
} | } | ||
+ | </pre> | ||
+ | Singleton pattern in PHP 5: | ||
+ | <pre> | ||
+ | <?php | ||
+ | class Singleton { | ||
+ | // object instance | ||
+ | static $instance; | ||
+ | |||
+ | private function __construct() {} | ||
+ | private function __clone() {} | ||
+ | |||
+ | public static function getInstance() { | ||
+ | if (!Singleton::$instance instanceof self) { | ||
+ | Singleton::$instance = new self(); | ||
+ | } | ||
+ | return Singleton::$instance; | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
</pre> | </pre> |
Revision as of 18:19, 8 March 2007
Introduction
Singleton pattern Ensure a class only has one instance, and provide a global point of access to it. This is useful when exactly one object is needed to coordinate actions across the system.
Implementation
- Singleton pattern is implemented by creating a class with a method that creates a new instance of the object if one does not exist.
- If an instance already exists, it simply returns a reference to that object.
- To make sure that the object cannot be instantiated any other way, the constructor is made either private or protected.
UML Diagram
Sample Code
class Singleton { private static Singleton instance; // Note: Constructor is 'protected' protected Singleton() { } public static Singleton Instance() { // Use 'Lazy initialization' if (instance == null) { instance = new Singleton(); } return instance; } }
Singleton pattern in PHP 5:
<?php class Singleton { // object instance static $instance; private function __construct() {} private function __clone() {} public static function getInstance() { if (!Singleton::$instance instanceof self) { Singleton::$instance = new self(); } return Singleton::$instance; } } ?>