//原型模式 class Canvas{ private $data; function init($width = 20, $height = 10) { $data = array(); for($i = 0; $i < $height; $i++) { for($j = 0; $j < $width; $j++) { $data[$i][$j] = '*'; } } $this->data = $data; } function rect($x1, $y1, $x2, $y2) { foreach($this->data as $k1 => $line) { if ($x1 > $k1 or $x2 < $k1) continue; foreach($line as $k2 => $char) { if ($y1>$k2 or $y2<$k2) continue; $this->data[$k1][$k2] = '#'; } } } function draw(){ foreach ($this->data as $line){ foreach ($line as $char){ echo $char; } echo "<br>;"; } } } $c = new Canvas(); $c->init(); $canvas1 = clone $c;//通过克隆,可以省去init()方法,这个方法循环两百次 $canvas1->rect(2, 2, 8, 8); $canvas1->draw(); echo "-----------------------------------------<br>"; $canvas2 = clone $c; $canvas2->rect(1, 4, 8, 8); $canvas2->draw();
php原型模式
猜你喜欢
转载自blog.csdn.net/sn_qmzm521/article/details/80612586
今日推荐
周排行