skillup

技術ブログ

プログラミング全般

Simple Factoryパターンについて

投稿日:

今回はデザインパターンの一種であるSimple Factoryパターンに関して。

Simple Factoryパターンとは

正確な定義は色々と難しいと思いますが、わかりやすく言うと、

サブクラスなどがある場合、インスタンス化する部分を別オブジェクトに任せ、カプセル化するデザインパターン

だと認識しています。この任せられる別オブジェクトの部分をSimpleFactoryなどと言います。

サンプルコード

抽象的な例だと難しいので、コードを見てみます。

Pet.php

Dog.php

Cat.php

AnimalFactory.php

AnimalController.php

https://github.com/umanari145/phptips/tree/master/factory

解説

AnimalFactoryの中でCatやDogのインスタンスが生成され、AnimalControllerからはインスタンス生成が見えないため、疎結合になります。

このため、AnimalControllerがサブクラスの変更(CatがDogに変更されるなど、)の影響を受けないと言うメリットがあります。

SimpleFactoryメソッドを使わない場合、AnimalControllerの部分にDogやCatのインスタンス生成を書かないといけないため、変更の影響を受けてしまいます。

参考リンク

【PHPで学ぶデザインパターン入門】第5回 Factoryパターン

-プログラミング全般

執筆者:


comment

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

関連記事

no image

ログの設計指針について

今まで10以上近い現場で仕事をしてきましたが、どの現場でも絶対必要になる(かつどこもあまり対策が取られていない)技術としては 検証したい状態の復元がすぐにできる(テストデータ作成) ログの適切な設計 …

no image

CIことはじめ

業務でJavaのテキスト変換ツールを作成。 プログラムよりもCIツールを使って他人の環境下で正常に稼動させるためにどうするかの調査に時間かかりましたね。 今回やりたかったことは下記の通りです。いわゆる …

no image

新しいプロジェクトに入った時にやること

新しいプロジェクトに入った時に最初にすべきことややっておくことなど Contents1 仕様理解編1.1 ユーザーの行動遷移の理解1.2 キー系のデータの理解1.3 データグルーピング1.4 サンプル …

no image

制御フローについて

リーダブルコード 7章。制御フロー(if文などの条件分岐)について ここらへんは個人個人癖がついているとおもいますが、確かに読みやすい、読みにくいというのはあるのでなるべく汎用性のある規則を身につけた …

no image

メモリに関して 静的領域、スタック、ヒープなど

実務でメモリの調査をしましたが、肝心のメモリについてほとんどわかっていないのでメモ。 メモリの領域を大きく分けると静的、スタック、ヒープに別れる。 Contents1 静的2 スタック3 ヒープ4 そ …

アーカイブ