goods = $goods; $this->member = $member; } /** * @param $price * @return float */ abstract public function getAmount($price); /** * @return boolean */ abstract public function validate($price); abstract public function getKey(); abstract public function getName(); public function getLog($amount) { return new GoodsMemberDiscountLog([ 'code' => $this->getKey(), 'name' => $this->getName(), 'amount' => $amount, ]); } }