デザインパターン

Factory

インスタンス生成を請け負うクラスを作るよ!というパターンです。 工場をまんまイメージすると理解が楽になります。

いつ使うのか

インスタンスの生成を抽象化したいときに使いませう。 こんなコードがでてきたとき or でてきそうなときは適用できると考えてもよいでしょう。

  1. <?php
  2. $obj = new Object();
  3. $obj->setHoge($hoge);//メンバを初期化
  4. $obj->setFoo($foo);//メンバry
  5. $obj->setBar($bar);//ry
  6. ...
  7. ...
  8. ...
  9. ?>

これが

  1. <?php
  2. $factory = new ObjectFactory();
  3. $obj = $factory->create( array( $hoge, $foo, $bar, ... ) );
  4. ?>

こんなん。 前者だと、工場の生産ラインを直に見てる感じ。後者は工場の中身は見てない。

メリット

インスタンスの生成が抽象化できる。「setHogeしてsetFooしてsetBarして...」から「ObjectFactoryにcreateさせる」という風に人間に分かりやすいコードになる。←これ重要