}
}
class ArrabiataFactory extends PastaFactory
{
    public function noodle()
    {
        return new Penne();
    }
    public function sauce()
    {
        return new TomatoSauce();
    }
    public function topping()
    {
        return new Eggplant();
    }
}
class Kitchen
{
    public function cook(PastaFactory $pasta_factory)
    {
        var_dump($pasta_factory->noodle());
        var_dump($pasta_factory->sauce());
        var_dump($pasta_factory->topping());
    }
}
$kitchen = new Kitchen();
$carbonara_factory = new CarbonaraFactory();
$kitchen->cook($carbonara_factory);
$arrabiata_factory = new ArrabiataFactory();
$kitchen->cook($arrabiata_factory);