simple -- abstract
<?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 clearResult(){ $this->_Result = 0; } abstract protected function getResult(); } class OperationAdd extends Operation { public function getResult(){ $this->_Result = $this->_NumberA + $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 CreateOperation($type, $A, $B){ switch($type) { case '+': self::$obj = new OperationAdd($A,$B); break; case '-': self::$obj = new OperationSub($A,$B); break; } return self::$obj; } } $obj = OperationFactory::CreateOperation('-', 5, 6); echo $obj->getResult();