继"Tell, don't Ask"-principle之后,不应在OOP中使用getter。OOP - 无GET/SET
但是如何解决问题(至少我认为是这样)实际上需要一些来自对象的“内部信息”?那么如何改变下面的例子,以便create_bill()函数不需要为每个项目的价格提供ASK?
class chopping_cart {
private $itemlist = array();
function item_add($name, $price) {
$his->itemlist[]=new item($name, $price);
}
private create_bill() {
foreach $this->itemlist AS $element;
$sum += $element->get_price();
}
}
class item {
private $name;
private $price;
function __construcor($name,$price) {...}
function get_price() {
return $price;
}
}
用法:
$sc = new shopping_cart()
$sc->item_add("Bike", 1.00);
$sc->item_add("Ship", 2.00);
$sc->create_bill();
如果购物车中包含项目列表,为什么购物车能够了解每个项目的价格的价值? – user12345613
遵循所述的“告诉别问”原则,它似乎是邪恶的。 – Tom
你从哪里听到这个“告诉别人问题”的原则?我从来没听说过。 – xxpor