委托和组合的对比

委托是将一部分功能分割出去完成,即委托者(delegator)将自己委托给受托者(delegatee),受托者方法中参数为委托者对象;然后委托者调用受托者类对象。

委托和组合的对比_第1张图片
结构图

委托与组合的对比:

(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();; }

}

委托相比于组合,是在受托者方法中加入了委托者对象。

你可能感兴趣的:(委托和组合的对比)