工厂方法模式不做反射类检测$name;}公共函数__set($name,$value){$this->$name=$value;}公共函数getResult(){返回0;}}classOperationAddextendsOperation{publicfunctiongetResult(){return$this->_num1+$this->_num2;}}classOperationSubextendsOperation{publicfunctiongetResult(){return$this->_num1-$this->_num2;}}classOperationMulextendsOperation{publicfunctiongetResult(){return$this->_num1*$this->_num2;}}classOperationDivextendsOperation{publicfunctiongetResult(){if(empty($this->_num2)){thrownewException("除数不能为0",1);}返回$this->_num1/$this->_num2;}}//**********工厂接口-类**********//接口IFactory{publicfunctionCreateOperation();}classAddFacrotyimplementsIFactory{publicfunctionCreateOperation(){returnnewOperationAdd();}}classSubFactory实现IFactory{publicfunctionCreateOperation(){returnnewOperationSub();}}classMulFactory实现IFactory{publicfunctionCreateOperation(){returnnewOperationMul();}}类DivFactory实现IFactory{publicfunctionCreateOperation(){returnnewOperationDiv();}}//clienttry{//工厂方法$f=newAddFacroty();$o=$f->CreateOperation();$o->_num1=10;$o->_num2=2;print_r($o->getResult());}catch(Exception$e){echo$e->getMessage();}
