今回はデザインパターンの一種であるSimple Factoryパターンに関して。
Simple Factoryパターンとは
正確な定義は色々と難しいと思いますが、わかりやすく言うと、
サブクラスなどがある場合、インスタンス化する部分を別オブジェクトに任せ、カプセル化するデザインパターン
だと認識しています。この任せられる別オブジェクトの部分をSimpleFactoryなどと言います。
サンプルコード
以下で簡単なサンプルを書いております。
https://github.com/umanari145/phptips/tree/master/factory
解説
AnimalFactoryの中でCatやDogのインスタンスが生成され、AnimalControllerからはインスタンス生成が見えないため、疎結合になります。
このため、AnimalControllerがサブクラスの変更(CatがDogに変更されるなど、)の影響を受けないと言うメリットがあります。
SimpleFactoryメソッドを使わない場合、AnimalControllerの部分にDogやCatのインスタンス生成を書かないといけないため、変更の影響を受けてしまいます。
参考リンク