当前位置: 首页 > 后端技术 > PHP

PHP设计模式(七)原型模式

时间:2023-03-29 19:50:22 PHP

原型模式类似于工厂模式,不同于工厂模式的实现。在原型模式下,首先创建一个原型对象,然后通过克隆原型对象创建一个新对象,这样就省去了创建类时的初始化操作。原型模式适用于大型对象的创建。大对象是昂贵的,每一个new都会消耗很多。原型模式只需要内存拷贝classCanvas{private$data;公共函数init($hei,$wid){for($i=0;$i<$hei;$i++){for($i=0;$i<$wid;$i++){$data[$i][$j]="*";}}$this->data=$data;}publicfunctionrect($a1,$a2,$b1,$b2){foreach($this->dataas$k1->$line){if($k1<$a1or$k1>$a2)继续;foreach($lineas$k2=>$item){if($k2<$b2or$k2>$b2)继续;$this->data[$k1][$2]='';}}}publicfunctiondraw(){foreach($this->dataas$line){foreach($lienas$item){echo$item;}echoPHP_EOL:}}}$canvas=newCanvas1();$canvas->init(3,6,4,12);$canvas->draw();//传统,再新建一个对象,绘制其他矩形//原型模式$prototype=newCanvas();$prototype->init();$canvas2=clone$prototype;//克隆一个,其余的只用克隆,不需要new$canvas2->rect(1,3,2,6);$canvas2->draw();