演示工廠模式,演示工廠
<?php
header("content-type:text/html;charset=utf-8");
//演示工廠模式
/*
需求:請設計一個類,該類有一個方法,能夠做到這種效果:
給該方法傳入一個類名,則該方法就可以返回這個類的對象。就像一個
“塑料制品”工廠:給它一個某種產品的“模具”,就可以生產該模具對
應的塑料制品。
*/
//工廠類
class Factory{
static function GetObjectByClassName($class_name){
$obj1=new $class_name();
return $obj1;
}
}
class A{};
class B{};
class C{};
//$F=new Factory();
//$obj1= $F->GetObjectByClassName("A");
$obj1= Factory::GetObjectByClassName("A");
$obj2= Factory::GetObjectByClassName("A");
$obj3= Factory::GetObjectByClassName("B");
$obj4= Factory::GetObjectByClassName("C");
$obj5= Factory::GetObjectByClassName("A");
echo "<br />";var_dump($obj1);
echo "<br />";var_dump($obj2);
echo "<br />";var_dump($obj3);
echo "<br />";var_dump($obj4);
echo "<br />";var_dump($obj5);
/*
object(A)#2 (0) { }
object(A)#3 (0) { }
object(B)#4 (0) { }
object(C)#5 (0) { }
object(A)#6 (0) { }
*/