专栏首页PHP修行之路【php设计模式】代理模式

【php设计模式】代理模式

代理模式就是实现一个类代表另一个类的功能的一种结构性设计模式。

主要解决在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

下面实现一个图片处理类,但是在使用的时候不直接调用这个实际的类,而是通过代理类的方式去使用。

<?
interface Image{
    public function display();
}

class RealImage implements Image{
    public $filename;
    public function __construct($file_name){
        $this->filename = $file_name;
        $this->loadImage();
    }

    public function display(){
        echo "显示图片:{$this->filename}\n";
    }

    public function loadImage(){
        echo "加载图片:{$this->filename}\n";
    }
}

class ProyImage implements Image{
    public $realImage;
    public $filename;
    public function __construct($file_name){
        $this->filename = $file_name;
    }

    public function display(){
        if(!$this->realImage){
            $this->realImage = new RealImage($this->filename);
        }
        $this->realImage->display();
    }
}

$proy_image = new ProyImage("php.jpg");
$proy_image->display();
$proy_image->display();

//输出:
//加载图片:php.jpg
//显示图片:php.jpg
//显示图片:php.jpg

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【php设计模式】观察者模式

    当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。

    码缘
  • 【php设计模式】门面模式

    门面模式又叫外观模式,用来隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系...

    码缘
  • IOC容器实现

    码缘
  • PHP设计模式——抽象方法

    Dragon公司的业务受到轰炸,而CEO希望特许所有海外分支机构的专营权。他首先要注意的问题是如何确保产品质量。他们不希望特许经营者削减成本和使用低质量的组件。...

    Lemon黄
  • PHP设计模式——状态模式

    John在一家受欢迎的电话支持公司中担任客户支持代表。在以客户服务为导向的公司中,公司的首要任务是确保客户满意。为了改善服务质量,该公司投入了大量资金来改善支持...

    Lemon黄
  • Java POI 导出EXCEL经典实现

    在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出...

    Java团长
  • 代理模式与它在源码中的运用

    此时RealSubject作为代理对象的一个属性字段,在运行之前就会生成RealSubject的字节码文件,这种方式也称作静态代理

    爬蜥
  • js this问题和es6箭头函数this问题

    4.apply 调用 ,apply方法作用是改变函数的调用对象,此方法的第一个参数为改变后调用这个函数的对象,this指代第一个参数

    yaphetsfang
  • 不知道怎么提高代码复用性?看看这几种设计模式吧!

    想必大家都听说过DRY原则,其实就是Don't repeat yourself(不要重复你自己),意思就是不要重复写一样的代码,换句话说就是要提高代码的复用性。...

    蒋鹏飞
  • ​PHP设计模式之建造者模式

    建造者模式,也可以叫做生成器模式,builder这个词的原意就包含了建筑者、开发者、创建者的含义。很明显,这个模式又是一个创建型的模式,用来创建对象。那么它的特...

    硬核项目经理

扫码关注云+社区

领取腾讯云代金券