1. 定义抽象基类或者接口
2. 继承基类的子类
3. 实例化子类的工厂类
UML 类图
第一:定义接口
//file : OperatorClass.php
namespace Operator;
interface OperatorClass{
public function getValue($num1,$num2);
}
第二:实现接口类
//file : AddClass.php
namespace Operator;
class AddClass implements OperatorClass{
public function getValue($num1,$num2){
return $num1+$num2;
}
}//SubClass.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
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;
第五: