{category}

PHP - デザインパターン

ファクトリー

ファクトリー(モダンPHP開発とアーキテクチャ

意味 オブジェクト生成を代行


ファクトリーとは?

ファクトリーパターンは、オブジェクトの生成を専門のクラス(ファクトリー)に任せるデザインパターンです。これにより、オブジェクト生成のロジックを集中管理でき、コードの再利用性と保守性が向上します。また、生成するオブジェクトの型を実行時に決定できる柔軟性も提供します。

ファクトリーの具体的な使い方

ファクトリーパターンの実装と使用例

<?php

// 抽象的な車のインターフェース
interface Car
{
    public function drive();
}

// 具体的な車のクラス
class Sedan implements Car
{
    public function drive()
    {
        return 'セダンが走ります。';
    }
}

class SUV implements Car
{
    public function drive()
    {
        return 'SUVが走ります。';
    }
}

// ファクトリークラス
class CarFactory
{
    public static function createCar($type)
    {
        switch ($type) {
            case 'sedan':
                return new Sedan();
            case 'suv':
                return new SUV();
            default:
                throw new Exception('不明な車種です。');
        }
    }
}

// ファクトリーの使用例
try {
    $sedan = CarFactory::createCar('sedan');
    echo $sedan->drive() . "\n";

    $suv = CarFactory::createCar('suv');
    echo $suv->drive() . "\n";

    // 存在しない車種を指定
    $unknown = CarFactory::createCar('truck');
} catch (Exception $e) {
    echo '車の作成に失敗しました: ' . $e->getMessage() . "\n";
}

👇出力結果

セダンが走ります。
SUVが走ります。
車の作成に失敗しました: 不明な車種です。

この例では、車を生成するファクトリーパターンを実装しています。CarFactoryクラスがcar(車)オブジェクトの生成を担当し、createCarメソッドに車の種類を指定すると、対応する車のオブジェクトが生成されます。これにより、車の生成ロジックを1箇所にまとめ、新しい車の種類の追加も容易になります。また、存在しない車種を指定した場合の例外処理も含んでいます。

ファクトリーに関するよくある質問

Q. ファクトリーパターンとは?
A. ファクトリーパターンは、オブジェクトの生成を専門のクラス(ファクトリー)に任せるデザインパターンです。これにより、オブジェクト生成のロジックを集中管理でき、コードの再利用性と保守性が向上します。
Q. ファクトリーの利点は?
A. ファクトリーパターンの主な利点は、1) オブジェクト生成の一元管理、2) 低い結合度の実現、3) オブジェクト生成ロジックの変更や拡張が容易、4) クライアントコードとの分離、などがあります。
Q. どんな時に使うべき?
A. ファクトリーパターンは以下のような状況で特に有用です:1) オブジェクトの生成プロセスが複雑な場合、2) 生成するオブジェクトの型を実行時に決定したい場合、3) 同じインターフェースを持つが異なる実装のオブジェクトを生成する必要がある場合、4) オブジェクト生成のロジックを隠蔽したい場合。

ファクトリーが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、PHPのファクトリーやORM、SOLID、CodeIgniter、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


PHPを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!PHPはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

ORM

DBとオブジェクトの橋渡し

種類: ORM

SOLID

5つの設計原則の頭文字

種類: 設計原則

CodeIgniter

軽量高速なPHPフレームワーク

種類: フレームワーク

仮引数

関数定義時の引数

種類: 引数

curl_close()

cURLセッションを終了する関数

種類: cURL