php设计模式之委托模式

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php设计模式之委托模式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

委托模式

是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基本技巧,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。

动态委托的介绍

:动态委托概念来自于Jakarta 字节码工程库 (Byte-Code Engineering Library,bcel)。它能够分析存在的类,并且对于接口,抽象类,甚至运行时的具体类来说,它能够生成以字节编码委托类。

被委托的接口/类应该满足如下条件:

动态委托最多只能委托一个类,但是能够代理多个接口。这个限制来自于Java的单继承模式。一个java类最多只有一个父类。既然生成的委托类把被委托类作为它的父类,那么指定多个被委托类是不合理的。如果没有指定被委托类,那么缺省的父类就是Object。 下面是PHP 反射机制实现动态代理的代码

<PRe class="brush:PHP;">

{

function callFruit()

{
print "Generate an Apple";
}

}

class FruitDelegator
{
private $targets;
function __construct()
{
$this->target[] = new Fruit();
}

function __call($name,$args)

{
foreach ($this->target as $obj)
{
$r = new ReflectionClass($obj);
if ($method = $r->
getmethod($name))

  {

    if ($method->isPublic() && !$method->isAbstract())
    {

      return $method->invoke($obj,$args);
    }

  }

}

}

}

$obj = new FruITDelegator();

$obj->callFruit();

// 运行结果

// Generate an Apple
?>

脚本宝典总结

以上是脚本宝典为你收集整理的php设计模式之委托模式全部内容,希望文章能够帮你解决php设计模式之委托模式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。