3

この例から、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();
    }
}
4

1 に答える 1