这种设计模式是如何调用的?

时间:2009-10-21 08:22:59

标签: php design-patterns

您如何称呼此设计模式?

class Foo {
   protected $delegates = array();
   //...
   public function __call($method,$argv) {
      //call $this->$something->$method($argv), where $something is a mapping from $this->delegates
   }
}

我可以推测,但我不确定,所以我想问你。

2 个答案:

答案 0 :(得分:4)

委托和继承都是面向对象软件设计中的重要概念,但不是每个人都会将它们标记为模式。特别是,“四人帮”关于设计模式的开创性书籍包含对继承和授权的讨论,但作者并未将这些主题视为具体模式。将它们视为比特定设计模式更通用的设计概念是合理的。

委托可以被视为对象之间的关系,其中一个对象将某些方法调用转发给另一个对象,称为委托。授权还可以是强大的设计/重用技术。委派的主要优点是运行时灵活性 - 可以在运行时轻松更改委托。但与继承不同,委托不是大多数流行的面向对象语言直接支持的,并且它不利于动态多态。

答案 1 :(得分:2)

恰当地命名为Delegation pattern