この例から、CoffeeWithCream の getBrand() メソッドは不適切であるか、何か問題がありますか? このようにする理由は、呼び出されるすべての場所で $coffeeWithCream->$coffee->getBrand() を記述しないようにするためです。
特に、表面化した懸念事項の 1 つは単体テストです。この戦略がテストを複雑にするかどうかを知るには、まだ単体テストに慣れていません。
また、getBrand() は単純なアクセサ メソッドであることもわかっています。メソッドがより複雑なタスクを実行した場合、答えは変わるでしょうか?
Class Coffee {
public $brand;
public $ingredients = array('coffee');
public function getBrand() {
return $this->brand;
}
public function getIngredients() {
return $this->ingredients;
}
}
Class CoffeeWithCream {
public $coffee;
public __construct(Coffee $coffee) {
$this->coffee = $coffee;
}
public function getIngredients() {
$ingredients = $this->coffee->getIngredients();
$ingredients[] = 'cream';
return $ingredients;
}
public function getBrand() {
$this->coffee->getBrand();
}
}