在實際開發中,常會看到像下面一樣的程式碼
function getXXX(){ $db = new DB(); $db -> query(...); } function getYYY(){ $db = new DB(); $db -> query(...); }
在這種狀況下,DB的物件會被重覆建立,造成系統負擔
Singleton pattern就是要解決這樣子的問題,在建立同時先判斷物件是不是已經先存在
class DB { private static $_instance = null; public static function getInstance() { if( self::$_instance === null ){ self::$_instance = new self(); } return self::$_instance; } } //db1 db2 皆為同一個instance $db1 = DB::getInstance(); $db2 = DB::getInstance();
當然克服這種狀況也可以利用global來解決,不過以OOP的角度來說,還是建議使用Singleton。