所谓工厂模式和生产有关。生产什么呢?生产出来的是一个实例对象。通过什么设备生产?通过一个工厂类生产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();
?>