您的位置:首页 > 编程语言 > PHP开发

php 设计模式 (原型模)

2017-07-01 23:23 495 查看

/**
* 1.原型模式和工厂模式类似都是创建对象的
* 2.与工厂模式的实现不同,原型模式是实现创建一个原型对象然后通过clone原型对象来创建新的对象,
* 这样就避免了类创建时重复的初始化工作
* 3.原型模式适用于大对象的创建,创建一个大对象需要很大的开销,如果每次new会消耗很大,原型模式仅需要
* 内存拷贝即可
*/
class Canvas//实例化会花费很大开销
{
public $data;
protected $decorators = array();

//初始化画布
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;
print_r($data);
}

function draw()
{

foreach($this->data as $line)
{
foreach($line as $char)
{
echo $char;
}
echo "<br />\n";
}

}

function rect($a1, $a2, $b1, $b2)
{
foreach($this->data as $k1 => $line)
{
if ($k1 < $a1 or $k1 > $a2) continue;
foreach($line as $k2 => $char)
{
if ($k2 < $b1 or $k2 > $b2) continue;
$this->data[$k1][$k2] = ' ';
}
}
}
}

$prototype = new Canvas();
$prototype->init();

$ca1 = clone $prototype;
$ca1->rect(3, 6, 4, 12);
$ca1->draw();
echo '<br/>';
$ca2= clone $prototype;
$ca2->rect(1, 3, 2, 6);
$ca2->draw();


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: