Skip to content

Latest commit

 

History

History
45 lines (37 loc) · 729 Bytes

代理模式.md

File metadata and controls

45 lines (37 loc) · 729 Bytes

代理模式

真实类和代理类实现同一接口, 在代理类中, 除了如实反映真实类的方法, 还可以添加其它逻辑, 不会影响到真实类, 代理模式可以做到解耦

<?php

interface People
{
    public function say();
}

class Man implements People
{
    public function say()
    {
        return 'man';
    }
}

class Proxy implements People
{
    private $man;

    public function __construct()
    {
        $this->man = new Man();
    }

    public function say()
    {
        // 增加代理类的逻辑
        echo 'proxy';

        // 调用真实类的方法
        return $this->man->say();
    }
}

$proxy = new Proxy();
echo $proxy->say();

运行结果

proxyman