php代理模式(proxy design)

╄→гoц情女王★ 提交于 2020-02-11 09:57:27

结构模式最后一个,接着进入行为模式。

<?php
/*
The proxy design pattern functions as an interface to an original object behind
the scenes. It can act as a simple forwarding wrapper or even provide additional
functionality around the object it wraps. Examples of extra added functionality
might be lazy loading or caching that might compensate for resource intense
operations of an original object.
*/

interface ImageInterface {
    public function draw();
}

class Image implements ImageInterface {
    private $file;
    
    public function __construct($file) {
        $this->file = $file;
        sleep(2);
    }
    
    public function draw() {
        echo 'image: ' . $this->file . '<br/>';
    }
}

class ProxyImage implements ImageInterface {
    private $image = null;
    private $file;
    
    public function __construct($file) {
        $this->file = $file;
    }
    
    public function draw() {
        if (is_null($this->image)) {
            $this->image = new Image($this->file);
        }
        
        $this->image->draw();
    }
}

$image = new Image('image.png');
$image->draw();

$image = new ProxyImage('image.png');
$image->draw();
?>

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!