0

PHP 5.x(通常は擬似コード)でこれを行う場合:

class object{
    __construct($id){
       <<perform database query>>
    }
}

$array(1) = new object(1);
$array(1) = new object(1);

私は努力(メモリ、CPUなど)を無駄にしていますか?データベースクエリは2回実行されますか?

これを回避するための最良の方法は何ですか(懸念がある場合)?$array(1) instanceof object?を使用する isset($array(1))array_key_exists(1, $array)

クラスをチェックインして、すべての作業を再度実行する前に、クラスがすでに存在するかどうかを確認する(良い?)方法はありますか?


編集:明確にするために、私はこのオブジェクトを2回必要としません。そして、このオブジェクトは再び使用され$array(523) = new object(523);ます。私の主な質問は、まったく同じオブジェクトを重複して作成しないようにするための最善の方法です。

4

1 に答える 1

3

複数のオブジェクトの作成を避けたい場合は、いくつかの選択肢があります。頭に浮かぶのは...

  1. オブジェクトを一度作成し、必要な場所に渡されるようにします。これは、そのオブジェクトに関するコードの依存関係を確認する必要があることを意味します。

  2. オブジェクトファクトリを使用してオブジェクトを構築すると、オブジェクトがすでに作成されている場合は、新しいオブジェクトを作成するのではなく、オブジェクトへの参照を返すことができます。

  3. シングルトンパターンを実装します。

他のすべてと同様に、トレードオフが発生するため、状況を確認して、自分にとって最も適切なものを決定してください。

于 2012-12-12T17:34:04.187 に答える