このコードは、異なる種類の食品を表現し、各食品の準備と調理を管理します。
しかし、各食品の共通の振る舞いが不足しており、条件分岐が多数存在しています。
以下のソースコードをリファクタリングしなさい。
また、未使用の項目は削除すること。
<?php
class FoodItem
{
private string $name;
private string $type;
public function __construct(string $name, string $type)
{
$this->name = $name;
$this->type = $type;
}
public function prepare(): void
{
if ($this->type === "fruit") {
echo "フルーツ:{$this->name}を洗いました" . PHP_EOL;
} elseif ($this->type === "vegetable") {
echo '野菜:{$this->name}を切りました' . PHP_EOL;
}
}
public function cook(): void
{
if ($this->type === "fruit") {
echo "フルーツ:{$this->name}を切りました" . PHP_EOL;
} elseif ($this->type === "vegetable") {
echo "野菜:{$this->name}を煮ました" . PHP_EOL;
}
}
}
<?php
$apple = new FoodItem("りんご", "fruit");
$apple->prepare();
$apple->cook();
$carrot = new FoodItem("にんじん", "vegetable");
$carrot->prepare();
$carrot->cook();