范例(Examples)
上一项重构结束时,Person将Department隐藏起来了:
class Person...
Department _department;
public Person getManager() {
return _department.getManager();
}
class Department...
private Person _manager;
public Department(Person manager) {
_manager = manager;
}
为了找出某人的经理,客户代码可能这样写:
manager = john.getManager();
首先在Person中建立一个[受托对象(delegate)取得函数]:
manager = john.getDepartment.getManager();
然后逐一处理每个委托函数。
为方便起见,我也可能想要保留一部分委托关系(delegations)。此外我也可能希望对某些客户隐藏委托关系,并让另一些用户直接使用受托对象。