Maison  >  Article  >  développement back-end  >  Explication détaillée du modèle de conception PHP sur l'utilisation et la fonction du modèle de prototype

Explication détaillée du modèle de conception PHP sur l'utilisation et la fonction du modèle de prototype

黄舟
黄舟original
2017-07-17 16:04:541105parcourir

Modèle de prototype (Modèle de prototype) : Semblable au Modèle d'usine, les deux sont utilisés pour créer des objets. Utilisez le clonage pour générer un objet volumineux et réduire la surcharge d'initialisation et d'autres opérations lors de la création

Pourquoi le mode prototype est nécessaire

Parfois, nous devons créer plusieurs grands objets similaires. objets . Si vous transmettez directement le nouvel objet, cela coûtera très cher et vous devrez effectuer un travail d'initialisation répété après le nouveau. Il est possible d'encapsuler le travail d'initialisation, mais pour le système, que vous l'encapsuliez ou non, le travail d'initialisation doit encore être effectué.
2. Le mode prototype est différent. Le mode prototype crée d'abord un objet prototype, puis crée un nouvel objet en clonant l'objet prototype, ce qui élimine le besoin de travaux d'initialisation répétés et le système n'a besoin que d'une copie mémoire.

<?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();

?>

Comme vous pouvez le voir ici, s'il y a beaucoup de membres d'une classe et de variables , si plusieurs nouveaux objets sont créés en externe et attribués des valeurs un par un, cela sera être inefficace et sujet à la redondance du code. Si quelque chose ne va pas, copiez-vous via la copie prototype, puis apportez des modifications mineures pour devenir un autre nouvel objet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn