프로토타입 패턴은 추상 팩토리 패턴/content/10866786.html을 강력하게 변환한 것입니다. 간단히 말해서 추상 팩토리 패턴의 여러 팩토리 클래스를 객체 생성을 담당하는 중앙 제어 클래스로 결합합니다.
<?php //生产引擎的标准 interface engineNorms{ function engine(); } class carEngine implements engineNorms{ public function engine(){ return '汽车引擎'; } } class busEngine implements engineNorms{ public function engine(){ return '巴士车引擎'; } } //生产车身的标准 interface bodyNorms{ function body(); } class carBody implements bodyNorms{ public function body(){ return '汽车车身'; } } class busBody implements bodyNorms{ public function body(){ return '巴士车车身'; } } //生产车轮的标准 interface whellNorms{ function whell(); } class carWhell implements whellNorms{ public function whell(){ return '汽车轮子'; } } class busWhell implements whellNorms{ public function whell(){ return '巴士车轮子'; } } //原型工厂 class factory{ private $engineNorms; private $bodyNorms; private $whellNorms; public function __construct(engineNorms $engineNorms,bodyNorms $bodyNorms,whellNorms $whellNorms){ $this->engineNorms=$engineNorms; $this->bodyNorms=$bodyNorms; $this->whellNorms=$whellNorms; } public function getEngineNorms(){ return clone $this->engineNorms; } public function getBodyNorms(){ return clone $this->bodyNorms; } public function getWhellNorms(){ return clone $this->whellNorms; } } $carFactory=new factory(new carEngine(),new carBody(),new carWhell()); $car['engine']=$carFactory->getEngineNorms()->engine(); $car['body']=$carFactory->getBodyNorms()->body(); $car['whell']=$carFactory->getWhellNorms()->whell(); print_r($car); $busFactory=new factory(new busEngine(),new busBody(),new busWhell()); $bus['engine']=$busFactory->getEngineNorms()->engine(); $bus['body']=$busFactory->getBodyNorms()->body(); $bus['whell']=$busFactory->getWhellNorms()->whell(); print_r($bus); ?>
프로토타입 모드는 코드 양을 줄이고, 객체를 반환할 때 사용자 정의 작업을 추가할 수 있어 매우 유연하고 편리합니다. 그러나 프로토타입 모드에서는 복제 방법을 사용한다는 점에 유의해야 합니다. 복제로 인해 발생하는 얕은 복사 문제에 주의하십시오. 즉, 복제된 객체의 속성에 객체가 포함되어 있으면 복제는 새로운 복사본을 얻지 못합니다. 같은 참조.
위 내용은 PHP 객체지향 개발-프로토타입 모드 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!