php proxy mode (proxy design)

Finally, a structural model, and then into the behavior patterns.

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

Guess you like

Origin www.cnblogs.com/aguncn/p/11183033.html