委派模式是一种特殊的静态代理模式,他的基本作用就是负责任务的调用和分配任务。不过代理模式注重过程,而委派模式注重结果。
以外包公司为例,领导接到客户需求,需要一个Java开发人员临时协助工作,领导此时会把需求给下面的人事主管,人事主管再去筛选并选择合适人员。
public interface IEmployee {
/**
* 工作
*/
void work(String task);
}
public class Boss implements IEmployee {
private Manager manager;
public Boss(Manager manager) {
this.manager = manager;
}
public void work(String task) {
System.out.println("我是Boss,现在来了个单子,需要"+ task + "开发人员来处理");
manager.work(task);
}
}
public class Manager implements IEmployee {
private static Map<String, IEmployee> employeeMap = new HashMap<String, IEmployee>();
static {
employeeMap.put("vue", new VueDeveloper());
employeeMap.put("java", new JavaDeveloper());
}
public void work(String task) {
if (!employeeMap.containsKey(task)) {
System.out.println("我是人力总监,没有能做这个任务的人!!!!");
return;
}
System.out.println("我是人力总监,找到可以做这件事的人");
employeeMap.get(task).work(task);
}
}
public class JavaDeveloper implements IEmployee {
public void work(String task) {
System.out.println("我是Java开发牛大大,外包干活了");
}
}
public class VueDeveloper implements IEmployee {
public void work(String task) {
System.out.println("我是Vue开发张大大,封闭开发去咯");
}
}
public class TestDelegate {
public static void main(String[] args) {
Boss boss = new Boss(new Manager());
boss.work("java");
}
}
/*
我是Boss,现在来了个单子,需要java来处理
我是人力总监,找到可以做这件事的人
我是Java开发牛大大,外包干活了
*/
原文:https://www.cnblogs.com/ns-study/p/14612294.html