您如何称呼此设计模式?
class Foo {
protected $delegates = array();
//...
public function __call($method,$argv) {
//call $this->$something->$method($argv), where $something is a mapping from $this->delegates
}
}
我可以推测,但我不确定,所以我想问你。
答案 0 :(得分:4)
委托和继承都是面向对象软件设计中的重要概念,但不是每个人都会将它们标记为模式。特别是,“四人帮”关于设计模式的开创性书籍包含对继承和授权的讨论,但作者并未将这些主题视为具体模式。将它们视为比特定设计模式更通用的设计概念是合理的。
委托可以被视为对象之间的关系,其中一个对象将某些方法调用转发给另一个对象,称为委托。授权还可以是强大的设计/重用技术。委派的主要优点是运行时灵活性 - 可以在运行时轻松更改委托。但与继承不同,委托不是大多数流行的面向对象语言直接支持的,并且它不利于动态多态。
答案 1 :(得分:2)
恰当地命名为Delegation pattern?