<?php /** * 原型模式 * 来自<<深入php面向对象,模式与实践>> * 通过克隆创建对象 */ class Sea {} class EarthSea extends Sea{} class MarsSea extends Sea{} class Plains {} class EarthPlains extends Plains{} class MarsPlains extends Plains{} class Forest {} class EarthForest extends Forest{} class MarsForest extends Forest{} class TerrainFactory { private $sea; private $forest; private $plains; function __construct($sea, $forest, $plains) { $this->sea = $sea; $this->forest = $forest; $this->plains = $plains; } function getSea() { return clone $this->sea; } function getForest() { return clone $this->forest; } function getPlains() { return clone $this->plains; } } $tFactory = new TerrainFactory(new Sea, new Forest, new Plains); var_dump($tFactory->getSea()); var_dump($tFactory->getForest()); var_dump($tFactory->getPlains());