zoukankan      html  css  js  c++  java
  • php 八大设计模式-原型模式

    原型模式的作用:对象克隆以避免创建对象时的消耗

    特点:

    1. 与工厂模式类似,都是用来创建对象。
    2. 与工厂模式的实现不同,原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。这样就免去了类创建时重复的初始化操作。 
    3. 原型模式适用于大对象的创建,创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需要内存拷贝即可。
    <?php 
    // 原型模式
    class Canvas {
    
        private $data;
    
        public function init($width = 20, $height = 10) {
            $data = [];
            for($i = 0; $i < $height; $i++) {
                for($j = 0; $j < $width; $j++) {
                    $data[$i][$j] = '*';
                }
            }
            $this->data = $data;
        }
    
        public 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] = '#';
                }
            }
        }
    
        public function draw() {
            foreach ($this->data as $line){
                foreach ($line as $char){
                    echo $char;
                }
                echo "<br>;";
            }
        }
    }
    
    $c = new Canvas();
    $c->init();
    // / $canvas1 = new Canvas();
    // $canvas1->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();
    
     ?>
  • 相关阅读:
    python设计模式
    tomcat在ubuntu下的配置
    排序算法
    python爬虫(一)
    python实现推荐系统(二)
    python实现k近邻
    python实现逻辑回归
    python实现推荐系统(一)
    SGD实现推荐系统
    pyqt4+chatterbot实现简单聊天机器人程序
  • 原文地址:https://www.cnblogs.com/fangdada/p/14874983.html
Copyright © 2011-2022 走看看