假设我有 3 件物品:一个键盘、一件 T 恤和一瓶可乐。
$keyboard = new Item("Keyboard");
echo $keyboard->getPrice(); // return 50;
$tshirt = new Item("Tshirt");
echo $tshirt->getPrice(); // return 20;
$cola = new Item("Cola");
echo $cola->getPrice(); // return 0 or 2 whether the bottle is empty or not.
Price
获得一瓶可乐的最佳做法是什么?
我首先创建了 2 个类:
Class Item {
$this->price;
function __construct($name) {
// ...
}
public function getPrice() {
return $this->price;
}
}
Class Bottle extends Item {
$this->empty;
function __construct($name) {
// get from database the value of $this->empty
}
public function getPrice() {
if($this->empty)
return 0;
else
return $this->price;
}
}
但现在我想知道;当我使用 : 时$cola = new Item("Cola");
,我正在实例化一个Item
对象而不是一个Bottle
对象,因为我还不知道它是“普通”物品还是瓶子。
我是否应该在我的应用程序中实例化一个 Bottle 对象并研究另一个逻辑?或者有没有办法“重新创建”项目对象并将其转换为瓶子?