工厂方法,简单来说就是生成包含类的实例的一种方法。
工厂模式是最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。
这里附上一个比较特殊的例子:
我们要创造一个地球人,地球有两种人,男人和女人:
<?php
//实现工厂方法
interface abstracted{
public function realCreate();
}
//女人类
class Wuman{
public function action(){
echo "这是女人";
}
}
//男人类
class Man{
public function action(){
echo "这是男人";
}
}
//创建女人
class womanCreator implements abstracted{
public $chromosome;//染色体
public function realCreate(){
if($this->chromosome == "xx"){
return new Wuman();
}
}
}
//创建男人
class manCreator implements abstracted{
public $chromosome;//染色体
public function realCreate(){
if($this->chromosome == "xy"){
return new Man();
}
}
}
//人类工厂
class PersonFactory{
public function create($category){
$method = "{$category}Creator";
return $create = new $method();
}
}
$create = new PersonFactory();//创造人类
$instance = $create->create('woman');//创造女人
$instance->chromosome = "xx";//女性染色体
$instance->realCreate()->action();
?>