zoukankan      html  css  js  c++  java
  • PHP设计模式之代理模式

    代理模式定义

    为其他对象提供一种代理,以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。

    代理模式使用场景

    • 当需要隐藏一个类的时候;
    • 可以在代理类中做访问委托类的权限管理;
    • 当我们需要对委托类功能做拓展的时候也可以使用代理模式。

    代理模式的优缺点

    优点:

    1. 职责清晰,委托类只需关注自身功能实现,不需要非自身职责;
    2. 代理对象可以在客户端和目标对象之间起到中介作用,保护目标对象;
    3. 可拓展性更强。

    缺点:

    1. 代理类的增加,会使系统文件增加,增加复杂度;
    2. 增加一层代理类,性能会有所损耗;

    代理模式代码实现

    ByHouseInterface.php

    <?php
    
    
    namespace AppStructuralProxy;
    
    
    interface ByHouseInterface
    {
        public function byHouse();
    }
    
    

    TomByHouse.php

    <?php
    
    
    namespace AppStructuralProxy;
    
    
    class TomByHouse implements ByHouseInterface
    {
    
        public function byHouse()
        {
            echo "tom by a house 
    ";
        }
    }
    
    

    ByHousePorxy.php

    <?php
    
    
    namespace AppStructuralProxy;
    
    
    class ByHousePorxy implements ByHouseInterface
    {
    
        protected $customer;
    
        public function __construct(ByHouseInterface $customer)
        {
            $this->customer = $customer;
        }
    
        public function byHouse()
        {
            echo "by house before 
    ";
            $this->customer->byHouse();
            echo "by house after 
    ";
            return 1;
        }
    
    }
    
    

    测试类

    <?php
    
    class ProxyTest extends PHPUnitFrameworkTestCase
    {
        public function testByHouse()
        {
            $proxy = new AppStructuralProxyByHousePorxy(new AppStructuralProxyTomByHouse());
    
            $this->assertEquals(1, $proxy->byHouse());
        }
    }
    
    

    微信扫描二维码,关注我的订阅号,回复 "电子书" 获取各类技术书籍

  • 相关阅读:
    信息搜集与漏洞扫描
    ASN.1分析Alipay证书
    任务计划
    2020系统综合实践 期末大作业 21组
    2020系统综合实践 第6次实践作业 2组
    第5次实践作业
    第4次实践作业
    第3次实践作业
    第2次实践作业
    第1次实践作业
  • 原文地址:https://www.cnblogs.com/echoou/p/14244143.html
Copyright © 2011-2022 走看看