美文网首页PHP开发PHP经验分享
编程中的设计模式之代理模式

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

作者: phpworkerman | 来源:发表于2020-09-01 21:32 被阅读0次
    简介

    代理模式(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();
    
    总结

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

    相关文章

      网友评论

        本文标题:编程中的设计模式之代理模式

        本文链接:https://www.haomeiwen.com/subject/tutmsktx.html