<?php /** * 简单工厂模式 */ Interface IOperation{ /** * @return int */ public function getResult(); } class Operation{ private $num1 = 0; private $num2 = 0; /** * @return int */ public function getNum1(){ return $this->num1; } /** * @param int $num1 */ public function setNum1($num1){ $this->num1 = $num1; } /** * @return int */ public function getNum2(){ return $this->num2; } /** * @param int $num2 */ public function setNum2($num2){ $this->num2 = $num2; } } class OperationAdd extends Operation implements IOperation{ /** * @return int */ public function getResult(){ // TODO: Implement getResult() method. return ($this->getNum1() + $this->getNum2()); } } class OperationSub extends Operation implements IOperation{ /** * @return int */ public function getResult(){ // TODO: Implement getResult() method. return ($this->getNum1() - $this->getNum2()); } } class OperationMul extends Operation implements IOperation{ /** * @return int */ public function getResult(){ // TODO: Implement getResult() method. return ($this->getNum1() * $this->getNum2()); } } class OperationDiv extends Operation implements IOperation{ /** * @return int */ public function getResult(){ // TODO: Implement getResult() method. return ($this->getNum1() / $this->getNum2()); } } class OperationFactory{ public static function createOperation($operationStr){ $operation = null; switch($operationStr){ default: case '+': $operation = new OperationAdd(); break; case '-': $operation = new OperationSub(); break; case '*': $operation = new OperationMul(); break; case '/': $operation = new OperationDiv(); break; } return $operation; } } $operation = OperationFactory::createOperation('*'); $operation->setNum1(11); $operation->setNum2(12); echo $operation->getResult();
简单工厂模式
最新推荐文章于 2024-08-01 20:10:37 发布