美文网首页
php设计模式(七)原型模式

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

作者: mafa1993 | 来源:发表于2022-07-02 20:10 被阅读0次

原型模式

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

相关文章

网友评论

      本文标题:php设计模式(七)原型模式

      本文链接:https://www.haomeiwen.com/subject/nnmkbrtx.html