<?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();
?>