Le modèle prototype est une transformation puissante du modèle d'usine abstrait/content/10866786.html En termes simples, il combine plusieurs classes d'usine dans le modèle d'usine abstrait en une classe de contrôle centrale, qui est responsable de la génération des objets.
<?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); ?>
Le mode prototype réduit la quantité de code et lors du retour de l'objet, vous pouvez ajouter des opérations personnalisées, ce qui est très flexible et pratique. Mais il convient de noter que le mode prototype utilise la méthode clone. Veuillez faire attention au problème de copie superficielle causé par le clonage, c'est-à-dire que si les propriétés de l'objet cloné contiennent des objets, le clone n'obtiendra pas une nouvelle copie, mais. la même référence.
Ce qui précède est le contenu du développement orienté objet PHP - mode prototype. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !