委托是将一部分功能分割出去完成,即委托者(delegator)将自己委托给受托者(delegatee),受托者方法中参数为委托者对象;然后委托者调用受托者类对象。
委托与组合的对比:
(1)组合:
delegateA {
delegateeB b;
void methodA(); { b.methodB();;}
}
delegateeB {
void methodB(); {}
}
(2)委托:
delegateA {
delegateeB b;
voidmethodA(); { b.methodB(this);; }voiddo(); {}
}
delegateeB {
void methodB(delegateA a); { a.do();; }
}
委托相比于组合,是在受托者方法中加入了委托者对象。