首页 > 编程语言 >浅谈PHP设计模式的代理模式

浅谈PHP设计模式的代理模式

时间:2022-11-09 00:36:50浏览次数:45  
标签:function 调用 run 浅谈 对象 代理 PHP 设计模式 public

简介:

代理模式,是结构型的设计模式。用于为其它对象提供一种代理以控制对这个对象的访问。
目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象,并且可以在不改变目标对象的情况下添加一些额外的功能。

适用场景:

  1. 调用端不想或不能直接调用的对象。
  2. 服务端不想让调用端看到核心实现。

优点:

  1. 服务端与调用端分离,防止服务端代码与调用端直接关联,降低耦合。
  2. 保护目标对象。

缺点:

  1. 增加类的数量,增加代码复杂度。
  2. 额外且非必要的类,会造成资源损耗。

代码

//被代理的抽象接口
interface Mobile {
    public function run();
}

//被代理的内容
class Vivo implements Mobile {
    public function run() {
        echo 'vivo手机正在运行';
    }
}

//代理核心代码
class Proxy {
    private $real_obj;
    public function __construct() {
        $this->real_obj = new Vivo;
    }

    public function run() {
        $this->real_obj->run();
    }
}

//调用端=================================================
(new Proxy())->run();

标签:function,调用,run,浅谈,对象,代理,PHP,设计模式,public
From: https://www.cnblogs.com/phpphp/p/16871793.html

相关文章

  • CakePHP 2.x十分钟博客教程(二):控制器、模型与视图
     在上篇​​CakePHP教程​​中,为大家介绍了CakePHP的安装与配置过程。你的CakePHP框架现在应该已经能够建立应用程序了,本文为大家带来CakePHP如何创建控制器、模型及视图文......
  • 用 Gearman 分发 PHP 应用程序的工作负载
    尽管一个Web应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面。如果这类处理过于复杂或拖沓,最好是进行异步执行,以免Web服务......
  • phpstrom docker swoole win10
    构建镜像dockerfile点击查看代码#现在我们需要配置一些东西。#编译参数,用于指定Swoole版本ARGswoole_ver#保存到环境变量,如果没有传递就给默认值ENVSWOOLE_......
  • 魔法方法、元类、设计模式
    目录魔法方法、元类、设计模式面向对象的魔法方法基于魔法方法的笔试题元类简介创建类的两种方式元类定制类的产生行为元类定制对象的产生行为魔法方法之双下new方法设计模......
  • 设计模式及单例模式
    设计模式及单例模式设计模式简介​前人通过大量的验证,所创建出来的解决一些问题的固定高效方法IT行业的设计模式​IT行业的设计模式一共有23种,分为:创建型、结构型、......
  • 【前端面试题】06—16道设计模式面试题(附答案)
    设计模式不是针对某个框架的,而是针对某类问题或某类需求提出的,因此有广泛的适用性。我们学习设计模式不仅要学习理论,还要学习如何解决实际工作中的问题,所以在面试中,设计模式......
  • thinkphp6 url rewrite
    https://www.kancloud.cn/manual/thinkphp6_0/1037488URL重写可以通过URL重写隐藏应用的入口文件index.php[Nginx]在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Ngin......
  • thinkphp6 非法请求:index/hello
    搭建好tp6后Thinkphp6  Index控制器下面建立的hello()方法,不能访问,总是提示非法请求,换成其它方法名都没问题,就是hello不能用.http://xxx/index.php/index/hello提示#0[......
  • idea pycharm webstrom phpstrom goland clion 上传文件
    使用ide上传文件代替postman上传文件环境文件http-client.private.env.json{"dev":{"host":"http://localhost:15731/api/v1/","jwt":""}}......
  • php配置
    vimphp-fpm.conf[global]pid=/www/server/php/72/var/run/php-fpm.piderror_log=/www/server/php/72/var/log/php-fpm.loglog_level=notice[www]listen=/tmp/php......