委托是將一部分功能分割出去完成,即委托者(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();; }
}
委托相比于組合,是在受托者方法中加入了委托者對象。