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