php代理模式(proxy design)

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

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

猜你喜欢

转载自www.cnblogs.com/aguncn/p/11183033.html