所謂工廠模式和生產有關。生產什么呢?生產出來的是一個實例對象。通過什么設備生產?通過一個工廠類生產simpleFactoty。怎么生產呢?工廠類調用自身靜態方法來生產對象實例static function woman.工廠類靜態方法必須返回一個對象.
class simpleFactoty{
static function woman{
return new woman();
}
}
使用工廠模式的必要性
很多沒接觸過工廠模式的人會不禁問,為啥我要費那么大的勁兒去構造工廠類去創建對象呢?不去套用那些易維護,可擴展之類的話,我們可以考慮這樣一個簡單的問題。如果項目中,我們通過一個類創建對象。在快完成或者已經完成,要擴展功能的時候,發現原來的類類名不是很合適或者發現類需要添加構造函數參數才能實現功能擴展。我靠!我都通過這個類創建了一大堆對象實例了啊,難道我還要一個一個去改不成?我們現在才感受到了“高內聚低耦合”的博大精深。沒問題,工廠方法可以解決這個問題。
基本的工廠類:
class myobject{};
class Myfactory{
public static function factory(){
return new myobject();
}
}
$instace = Myfactory::factory();
稍微復雜的工廠類:
<?php
interface transport{
public function go();
}
class bike implements transport{
public function go(){
echo "bike跑的慢";
}
}
class car implements transport{
public function go(){
echo "car開的快";
}
}
class bus implements transport{
public function go(){
echo "bus每一站都要停";
}
}
class transFactory{
public static function factory($transport){
switch($transport){
case 'bike':
return new bike();
break;
case 'car':
return new car();
break;
case 'bus':
return new bus();
break;
}
}
}
$transport = transFactory::factory('car');
$transport->go();
?>