原型模式

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

 

posted on 2013-07-13 14:04  mtima  阅读(196)  评论(0编辑  收藏  举报

导航