Prototype Pattern (Prototype Pattern): Ähnlich wie Factory Pattern werden beide zum Erstellen von Objekten verwendet. Verwenden Sie das Klonen, um ein großes Objekt zu generieren und den Aufwand für die Initialisierung und andere Vorgänge während der Erstellung zu reduzieren
1. Manchmal müssen wir mehrere ähnlich große Objekte erstellen Objekte. Wenn Sie das neue Objekt direkt übergeben, ist der Overhead sehr hoch und Sie müssen nach jedem neuen Objekt wiederholte Initialisierungsarbeiten durchführen. Es ist möglich, die Initialisierungsarbeit zu kapseln, aber für das System muss die Initialisierungsarbeit trotzdem durchgeführt werden, unabhängig davon, ob Sie sie kapseln oder nicht.
2. Der Prototypmodus ist anders. Der Prototypmodus erstellt zunächst ein Prototypobjekt und erstellt dann ein neues Objekt durch Klonen des Prototypobjekts. Dadurch entfällt die wiederholte Initialisierungsarbeit, und das System benötigt nur eine Speicherkopie.
<?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('清华大学', '计算机', '张三'); $stu1->printInfo(); $stu2 = $stu1->copy(); $stu2->name = '李四'; $stu2->printInfo(); ?>
Wie Sie hier sehen können, wird dies der Fall sein, wenn eine Klasse viele Mitglieder und Variablen hat und mehrere neue Objekte extern erstellt und ihnen nacheinander Werte zugewiesen werden Wenn etwas schief geht, wird es zu einem weiteren neuen Objekt, indem es sich selbst durch die Prototypenkopie kopiert und dann kleinere Änderungen vornimmt.
Das obige ist der detaillierte Inhalt vonPHP-Designmuster – detaillierte Erläuterung der Verwendung und Funktion des Prototypmusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!