このコードは、異なる種類の動物を表現し、それぞれの動物が鳴き声を出力し、食事をする機能を持っています。
しかし、各動物の種類に関連した条件分岐が多数存在し、拡張性が低く、管理が難しい状態です。
以下のソースコードをリファクタリングしなさい。
また、未使用の項目は削除すること。
<?php
class Animal
{
private string $type;
public function __construct(string $type)
{
$this->type = $type;
}
public function makeSound(): void
{
if ($this->type === "dog") {
echo 'ワンワン' . PHP_EOL;
} elseif ($this->type === "cat") {
echo 'ニャーニャー' . PHP_EOL;
} elseif ($this->type === "bird") {
echo 'チュンチュ' . PHP_EOL;
}
}
public function eat(): void
{
if ($this->type === "dog") {
echo 'ドッグフードを食べました' . PHP_EOL;
} elseif ($this->type === "cat") {
echo 'キャットフードを食べました' . PHP_EOL;
} elseif ($this->type === "bird") {
echo '鳥のエサを食べました' . PHP_EOL;
}
}
}
<?php
$dog = new Animal('dog');
$dog->makeSound();
$dog->eat();
$cat = new Animal('cat');
$cat->makeSound();
$cat->eat();