PHP开发PHP经验分享

编程中的设计模式之代理模式

2020-09-01  本文已影响0人  phpworkerman
简介

代理模式(Proxy Pattern)是一个类代表另外一个类的功能,属于结构型模式。客户端不直接访问真实的对象,而是通过一个代理对象间接的访问。

代码实例

现在有一个图片类,客户端通过代理模式访问,首次加载会访问真实的对象,再次访问将通过代理储存的对象调用图片类。

<?php
interface Image
{
    public function load();
}

class RealImage implements Image
{
    public $filename;

    public function __construct($filename)
    {
        $this->filename = $filename;
        $this->read();
    }

    public function read()
    {
        echo '读取真实图片' . $this->filename . '<br>';
    }

    public function load()
    {
        echo '载入图片' . $this->filename . '<br>';
    }
}

class ProxyImage implements Image
{
    public $filename;
    public $image = null;

    public function __construct($filename)
    {
        $this->filename = $filename;
    }

    public function load()
    {
        if($this->image === null){
            $this->image = new RealImage($this->filename);
        }

        $this->image->load();
    }
}

class ProxyDemo
{
    public function output()
    {
        $filename = 'person.jpg';
        $proxyImage = new ProxyImage($filename);
        //载入真实图片
        $proxyImage->load();
        //载入代理图片
        $proxyImage->load();
    }
}

$proxyDemo = new ProxyDemo();
$proxyDemo->output();
总结

代理模式实现了客户端和真实类之间的中间层,通过中间层可以实现对真实类的访问控制和功能扩展。

上一篇下一篇

猜你喜欢

热点阅读