未分類

FactoryパターンをStrategyパターンに書き換える

 

 

 

StrategyGetInstanceByInterfaceInteractor.php
----
class StrategyGetInstanceByInterfaceInteractor
{
  static public function handle($interface_name, $type) {
    return app()->make(config($interface_name . "." . $type));
  }
}


FruitInterface.php
----
Interface FruitInterface {
  public function bear();
}


config.php
----
return [
  'FruitInterface' => [
    'banana' => '\App\Classes\Fruit\Banana',
    'apple' => '\App\Classes\Fruit\Apple',
    'grape' => '\App\Classes\Fruit\Grape',
  ],
];


bad_client.php
----

$fruit_type = $request->get('fruit_type');
switch ($fruit_type) {
  case 'banana':
    $fruit = app()->make('\App\Classes\Fruit\Banana');
    break;
  case 'apple':
    $fruit = app()->make('\App\Classes\Fruit\Apple');
    break;
  case 'grape':
    $fruit = app()->make('\App\Classes\Fruit\Grape');
    break;
}
$fruit->bear();


good_client.php
----
$fruit_type = $request->get('fruit_type');
$fruit = StrategyGetInstanceByInterfaceInteractor::handle('FruitInterface', $fruit_type);
$fruit->bear();

 

 

 

 

 

 

 

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)