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());
        }
    }
    
    

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

  • 相关阅读:
    智能资产构建去中心化的资产管理系统
    以太坊—开放的智能合约完整解决方案
    去中心化的域名系统Namecoin
    bootstrap-内联文本元素-小号文本
    MySQL重新初始化安装数据库
    MySQL重新初始化安装数据库
    MySQL重新初始化安装数据库
    MySQL重新初始化安装数据库
    PHP模拟登录并获取数据
    PHP模拟登录并获取数据
  • 原文地址:https://www.cnblogs.com/echoou/p/14244143.html
Copyright © 2011-2022 走看看