hp的全域變數為程式設計帶來了很大的靈活性,但全域變數的不受約束性也帶來了極大的隱患。單例模式可以很好的替代全域變數。
假設有一朵花,每個人見到都會去澆花,然後再欣賞它。
class flower{ function __construct(){ echo date('Y-m-d H:i:s').'浇了花'; } public function look(){ return '一朵美丽的花'; } } $a=new flower();//将输出:2013-01-08 09:37:54浇了花 echo $a->look();//将输出:一朵美丽的花 $b=new flower();//将输出:2013-01-08 09:37:54浇了花 echo $b->look();//将输出:一朵美丽的
可見,要是人越來越多,花早晚會被淹死,我們需要的是,只要第一個看到花人澆了花便可,其他人不需要澆花。
class flower{ private static $instance; private function __construct(){ echo date('Y-m-d H:i:s').'浇了花'; } public static function getInstance(){ if(empty(self::$instance)){ self::$instance=new self(); } return self::$instance; } public function look(){ return '一朵美丽的花'; } } $a=flower::getInstance();//将输出:2013-01-08 09:52:43浇了花 echo $a->look();//将输出:一朵美丽的花 $b=flower::getInstance();//不会输出 echo $b->look();//将输出:一朵美丽的
單例模式適用與只需獲得一個相同的實例的環境,比如說 mysql資料庫的連接和其他操作。
以上就是php物件導向開發之-單例模式的內容,更多相關內容請關注PHP中文網(www.php.cn)!