パターンは、最善の手順と良い設計を記述するための手段です。 パターンは、一般的なプログラム上の課題に柔軟な解決策を提供します。
Factory パターンにより、実行時にオブジェクトを初期化できるようになります。 オブジェクトを"製造する"ことに似ているため、これは Factory パターンと呼ばれています。 パラメータ化された Factory が、生成するクラス名を引数として受け取ります。
例1 パラメータ化された Factory メソッド
<?php
class Example
{
    // パラメータ化された Factory メソッド
    public static function factory($type)
    {
        if (include_once 'Drivers/' . $type . '.php') {
            $classname = 'Driver_' . $type;
            return new $classname;
        } else {
            throw new Exception ('Driver not found');
        }
    }
}
?>
このメソドをクラス内で定義することで、実行時に ロードされるドライバを作成できるようになります。 Example クラスが、データベース抽象化クラスで、 MySQL および SQLite ドライバをロードするとすると以下のように行うことができます。
<?php
// MySQL ドライバをロード
$mysql = Example::factory('MySQL');
// SQLite ドライバをロード
$sqlite = Example::factory('SQLite');
?>
Singleton パターンは、クラスのインスタンスが一つだけであることが 必要である場合に適用されます。 この最も一般的な例は、データベースへの接続です。 このパターンを実装することで、プログラマは この単一のインスタンスが他の多くのオブジェクトから容易に アクセスできるようにすることができます。
例2 Singleton 関数
<?php
class Example
{
    // クラスのインスタンスを保持する
    private static $instance;
    // private なコンストラクタ。オブジェクトが直接生成されるのを防ぐ
    private function __construct()
    {
        echo 'I am constructed';
    }
    // singleton メソッド
    public static function singleton()
    {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }
        return self::$instance;
    }
    // とあるメソッド
    public function bark()
    {
        echo 'Woof!';
    }
    // ユーザーがインターフェースを複製するのを防ぐ
    public function __clone()
    {
        trigger_error('Clone is not allowed.', E_USER_ERROR);
    }
}
?>
このコードにより、Example クラスのインスタンスが一つ 作られ、取得されます。
<?php
// コンストラクタが private であるため、これは失敗します
$test = new Example;
// これにより、クラスの単一のインスタンスを取得します。
$test = Example::singleton();
$test->bark();
// これにより、E_USER_ERROR が発生する
$test_clone = clone $test;
?>
NPO法人の設立(東京・大阪) 東京や大阪などNPO法人を設立する場合の注意点等を紹介
不動産・賃貸・マンション 不動産・賃貸・マンションに関する用語集です。
堺市の入院・内科大阪の賃貸探し 大阪で賃貸を探している方は大阪ホームへ
東京の賃貸マンション 東京で賃貸を探すなら東京賃貸.orgへ