このリファクタリング例では、与えられたコードを抽象クラスFoodとクラスFruit、Vegetableに分割し、共通の振る舞いを持つ抽象メソッドを実装しました。
それにより、コードがメンテナンスしやすくなり、読みやすさも向上しました。
<?php
/**
* 抽象クラス Food を定義
*/
abstract class Food
{
protected string $name;
public function __construct(string $name)
{
$this->name = $name;
}
abstract public function prepare(): void;
abstract public function cook(): void;
}
<?php
/**
* クラスFruitを定義
*/
class Fruit extends Food
{
public function prepare(): void
{
echo "フルーツ:{$this->name}を洗いました" . PHP_EOL;
}
public function cook(): void
{
echo "フルーツ:{$this->name}を切りました" . PHP_EOL;
}
}
<?php
/**
* クラスVegetableを定義
*/
class Vegetable extends Food
{
public function prepare(): void
{
echo "野菜:{$this->name}を切りました" . PHP_EOL;
}
public function cook(): void
{
echo "野菜:{$this->name}を煮ました" . PHP_EOL;
}
}
<?php
$apple = new Fruit("りんご");
$apple->prepare();
$apple->cook();
$carrot = new Vegetable("にんじん");
$carrot->prepare();
$carrot->cook();