>  기사  >  백엔드 개발  >  PHP 디자인 패턴 - 프로토타입 패턴의 사용법과 기능에 대한 자세한 설명

PHP 디자인 패턴 - 프로토타입 패턴의 사용법과 기능에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-17 16:04:541104검색

Prototype Pattern(Prototype Pattern): Factory Pattern과 유사하며 둘 다 객체 생성에 사용됩니다. 복제를 사용하여 대형 개체를 생성하고 생성 중 초기화 및 기타 작업의 오버헤드를 줄입니다.

프로토타입 모드가 필요한 이유

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

?>

여기서 알 수 있듯이 클래스의 멤버 변수가 너무 많으면 외부에서 여러 개의 새 개체를 만들고 값을 하나씩 할당하면 비효율적이며 코드가 중복되고 오류가 발생합니다. 프로토타입 복사본을 통해 자신을 복사한 다음 작은 변경 작업을 수행해야 합니다.

위 내용은 PHP 디자인 패턴 - 프로토타입 패턴의 사용법과 기능에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.