<?php
//抽象类 定义属性及抽象方法
abstract class Operation{
protected $_NumberA = 0;
protected $_NumberB = 0;
protected $_Result= 0;
public function __construct($A,$B){
$this->_NumberA = $A;
$this->_NumberB = $B;
}
public function setNumber($A,$B){
$this->_NumberA = $A;
$this->_NumberB = $B;
}
public function clearResult(){
$this->_Result = 0;
}
abstract protected function getResult();
}
//操作类
class OperationAdd extends Operation{
public function getResult(){
$this->_Result = $this->_NumbserA + $this->_NumberB;
return $this->_Result;
}
}
class OperationSub extends Operation{
public function getResult(){
$this->_Result = $this->_NumberA - $this->_NumberB;
return $this->_Result;
}
}
…………
//工厂类
class OperationFactory{
private static $obj;
public static function CreationOperation($type,$A,$B){
switch($type){
case '+':
self::$obj = new OperationAdd($A,$B);
break;
case '-':
self::$obj = new OperationSub($A,$B);
break;
……
}
}
}
//操作
$obj = OperationFactory:: CreationOperation('+',5,6);
echo $obj-> getResult();
?>