ホームページ >バックエンド開発 >PHPチュートリアル >PHPデザインパターン~プロトタイプパターンの使い方と機能を詳しく解説

PHPデザインパターン~プロトタイプパターンの使い方と機能を詳しく解説

黄舟
黄舟オリジナル
2017-07-17 16:04:541140ブラウズ

プロトタイプ パターン (プロトタイプ パターン): ファクトリー パターンと同様に、両方とも オブジェクトの作成に使用されます。クローン作成を使用して大きなオブジェクトを生成し、作成時の初期化やその他の操作のオーバーヘッドを削減します

プロトタイプ モードが必要な理由

1. 場合によっては、複数の同様の大きなオブジェクトを作成する必要があります。 new オブジェクトを直接渡すとオーバーヘッドが非常に高く、new 後に初期化作業を繰り返し実行する必要があります。初期化作業をカプセル化することは可能ですが、システムでは、カプセル化するかどうかに関係なく、初期化作業を実行する必要があります。
2. プロトタイプ モードは異なります。プロトタイプ モードでは、最初にプロトタイプ オブジェクトを作成し、次にそのプロトタイプ オブジェクトを複製することで新しいオブジェクトを作成します。これにより、繰り返しの初期化作業が回避され、システムはメモリ コピーのみを必要とします。

<?php
/**
* 原型模式
*
* @author webff
*/
/**

//声明一个克隆自身的接口
interface Prototype {
    function copy(); 
}   

//产品要实现克隆自身的操作
class Student implements Prototype {
    //简单起见,这里没有使用get set
    public $school;
    public $major;
    public $name;

    public function construct($school, $major, $name) {
        $this->school = $school;
        $this->major = $major;
        $this->name = $name;
    }

    public function printInfo() {
        printf("%s,%s,%sn", $this->school, $this->major, $this->name);
     }

    public function copy() {
        return clone $this;
    }
}

$stu1 = new Student(&#39;清华大学&#39;, &#39;计算机&#39;, &#39;张三&#39;);
$stu1->printInfo();

$stu2 = $stu1->copy();
$stu2->name = &#39;李四&#39;;
$stu2->printInfo();

?>

ここで、クラスのメンバー 変数 が多すぎる場合、複数の新しいオブジェクトを外部で作成して 1 つずつ割り当てると、効率が悪く、コードが冗長でエラーが発生しやすくなることがわかります。プロトタイプのコピーを通じて自分自身をコピーしてから、小さな変更を実行する必要があります。これは、別の新しいオブジェクトです。

以上がPHPデザインパターン~プロトタイプパターンの使い方と機能を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。