原型模式

  1. 与工厂模式相似
  2. 与工厂模式实现不同,原型模式时先创立好一个原型对象,而后通过clone原型对象来创立新对象,免去了类创立时的初始化操作
  3. 原型模式实用于对象创立,创立大对象开销大,每次new就会耗费很大,原型模式仅需内存拷贝
class Canvas {    private $data;    public function init($hei,$wid){        for($i=0;$i<$hei;$i++){            for($i=0;$i<$wid;$i++){                $data[$i][$j] = "*";            }        }                $this->data = $data;    }            public function rect($a1,$a2,$b1,$b2) {        foreach($this->data as $k1->$line){            if($k1<$a1 or $k1 > $a2) continue;            foreach($line as $k2 => $item){                if($k2<$b2 or $k2> $b2) contine;                $this->data[$k1][$2] = ' ';            }        }    }        public function draw(){        foreach ($this->data as         $line){            foreach ($lien as $item) {                echo  $item;            }            echo PHP_EOL:        }    }    }$canvas = new Canvas1();$canvas->init(3,6,4,12);$canvas->draw();// 传统 ,再new一个对象,画其余长方形// 原型模式$prototype = new Canvas();$prototype->init();$canvas2= clone $prototype; // 克隆一个, 残余的都走clone就能够了,不须要再new了$canvas2->rect(1,3,2,6);$canvas2->draw();