委派模式(Delegate Pattern)的基本作用就是
負責任務的調用和分配,跟代理模式很像,可以看做是一種特殊情況下的靜態(tài)代理的全權代理,但是代理模式注重過程,而委派模式注重結果。
委派其實就是指點江山,叫別人干活,如果他收集結果,然后向領導匯報,例如以下這個很熟悉的場景:老板(Boss)給項目經理(Leader)下達任務,項目經理會根據實際情況給每個員工派發(fā)工作任務,待員工把工作任務完成之后,再由項目經理匯報工作進度和結果給老板。老板是不會關心是誰干了什么活,他只關心結果,到底是不是他滿意的
代碼實現
public interface IEmployee {
public void doing(String command);
}
public class EmployeeA implements IEmployee {
@Override
public void doing(String command) {
System.out.println("我是員工 A,我現在開始干" + command + "工作");
}
}
public class Leader implements IEmployee {
private Map<String,IEmployee> targets = new HashMap<String,IEmployee>();
public Leader() {
targets.put("注冊",new EmployeeA());
targets.put("登錄",new EmployeeB());
}
//項目經理自己不干活
public void doing(String command){
targets.get(command).doing(command);
}
}
public class Boss {
public void command(String command,Leader leader){
leader.doing(command);
}
}
//測試
public class DelegateTest {
public static void main(String[] args) {
//客戶請求(Boss)、委派者(Leader)、被被委派者(Target)
//
//
//
//
//
new Boss().command("登錄",new Leader());
}
}
總結
1.委派者要持有被委派者的引用
2.策略模式注重是可擴展(外部擴展),委派模式注重內部的靈活和復用
3.代理模式注重的是過程, 委派模式注重的是結果
4.委派的核心:就是分發(fā)、調度、派遣
5.委派模式:就是靜態(tài)代理和策略模式一種特殊的組合