PHP设计模式之简单工厂模式

1. 定义抽象基类或者接口

2. 继承基类的子类

3. 实例化子类的工厂类


UML 类图

factory.png


第一:定义接口
//file : OperatorClass.php
<?php
namespace Operator;
interface OperatorClass{
 public function getValue($num1,$num2);
}


第二:实现接口类

//file : AddClass.php
<?php
namespace Operator;
class AddClass implements OperatorClass{
 public function getValue($num1,$num2){
  return $num1+$num2;
 }
}
//SubClass.php
<?php
namespace Operator;
class SubClass implements OperatorClass{
 public function getValue($num1,$num2){
  return $num1-$num2;
 }
}
//MulClass.php
namespace Operator;
class MulClass implements OperatorClass{
	public function getValue($num1,$num2){
		return $num1*$num2;
	}
}


第三:定义工厂类

//FactoryClass.php
<?php
namespace Operator;
class FactoryClass{
 public static function create($Operator){
  $OperatorObj = null;
  switch($Operator){
   case 'add':
    $OperatorObj = new \Operator\AddClass();break;
   case 'sub':
    $OperatorObj = new \Operator\SubClass();break;
  }
  return $OperatorObj;
 }
}

第四:测试代码

require_once('./Autoload.class.php');
$add = \Operator\FactoryClass::create('add');
$addResult = $add->getValue(2,2);
echo $addResult;

$sub = \Operator\FactoryClass::create('sub');
$subResult = $sub->getValue(8,2);
echo $subResult;

$mul = \Operator\FactoryClass::create('mul');
$mulResult = $mul->getValue(3,3);
echo $mulResult;


第五:

点击下载源代码