php面向物件(工廠模式與單例模式)
今天剛學習了php的設計模式,一個是工廠模式而另一個是單例模式,工廠模式設計出來就是為了一種方便建立物件而做出來的。還有一個是單例模式,單例模式的設計有些比較難以理解,我們必須一步一步的分析:單例類的情況必須去建立類的例項,而且必須只有一個,首先沒有物件例項的情況就是將它的構造器私有化,程式碼是這樣子的:private function __construct(){} 。第二步就是寫一個方法,去只生成一個物件就返回而有的話就直接返回。這個我把整個的程式碼貼下:
class A{};
class B{};
class WorkStation { /* 工廠類 */
static function GetObject($className)
{
$obj = new $className();
return $obj;
}
}
$o1 = WorkStation::GetObject("A");
$o2 = WorkStation::GetObject("B");
var_dump($o1); var_dump($o2);
echo "<hr>";
class Single { /* 單例模式只允許建立類的物件 */
private function __construct()
{
}
static $instance = null;
static function GetObject($className)
{
if (!isset(self::$instance)) /* 如果生產的例項未空 */
{
$obj = new $className();
self::$instance = $obj;
return self::$instance;
}else{
return self::$instance;
}
}
}
$singleA = Single::GetObject("A");
$singleB = Single::GetObject("A");
var_dump($singleA);var_dump($singleB);