工厂类是指包含一个专门用来创建其他对象的方法的类,工厂类在多态性编程实践中是至关重要的,它允许动态的替换类,修改配置,通常会使应用程序更加灵活,熟练掌握工厂模式高级PHP开发人员是很重要的。
工厂模式通常用来返回符合类似接口的不同的类,工厂的一种常见用法就是创建多态的提供者,从而允许我们基于应用程序逻辑或者配置设置来决定应实例化哪一个类,例如,可以使用这样的提供者来扩展一个类,而不需要重构应用程序的其他部分,从而使用新的扩展后的名称。
通常,工厂模式有一个关键的构造,根据一般原则命名为Factory的静态方法,然而这只是一种原则,工厂方法可以任意命名,这个静态还可以接受任意数据的参数,必须返回一个对象。
<?php
//抽象一个父亲类
abstract class Parents{
public abstract function show();
}
//儿子继承父亲
class Sons extends Parents{
public function show(){
echo "I'm son";
}
}
//女儿继承父亲
class Girls extends Parents{
public function show(){
echo "I'm girls";
}
}
//创造子女
class Factory{
protected $obj=array();
public function create($parents){
$this->obj[]=new $parents();
}
public function show(){
foreach($this->obj as $par){
$par->show();
}
}
}
$par=new Factory();
//生出儿子
$par->create("Sons");
//生出女儿
$par->create("Girls");
$par->show();
?>
第二个:简单的四则运算:
<?php
//抽象一个运算类
abstract class Oper{
public $num1;
public $num2;
public function __construct($num1,$num2){
$this->num1=$num1;
$this->num2=$num2;
}
abstract public function jisuan();
}
//加法类
class Jia extends Oper{
public function jisuan(){
return $this->num1+$this->num2;
}
}
//减法类
class Jian extends Oper{
public function jisuan(){
return $this->num1-$this->num2;
}
}
//乘法类
class Cheng extends Oper{
public function jisuan(){
return $this->num1*$this->num2;
}
}
//除法类
class Chu extends Oper{
public function jisuan(){
return $this->num1/$this->num2;
}
}
//给定运算类型造出相应的对象
class Factory{
public static $num1;
public static $num2;
public function __construct($num1,$num2){
self::$num1=$num1;
self::$num2=$num2;
}
public static function create($type){
return new $type(self::$num1,self::$num2);
}
}
//给定要运算的两个值
$factory=new Factory(3,2);
//造出加法对象
$jia=Factory::create('Jia');
echo $jia->jisuan().'<br/>';
//造出减法对象
$jian=Factory::create('Jian');
echo $jian->jisuan().'<br/>';
//造出乘法对象
$cheng=Factory::create('Cheng');
echo $cheng->jisuan().'<br/>';
//造出除法对象
$chu=Factory::create('Chu');
echo $chu->jisuan().'<br/>';
?>
代码都是经过测试的,大家可以直接复制粘贴即可,希望对大家有所帮助