委派模式(delegate)的基本作用就是负责任务的调度和分配,它和代理模式很像但是委派模式注重的是结果,而代理模式注重的是过程。
下面我们举一个例子:老板把任务交给项目经理,项目经理再把任务分配给员工
首先创建一个员工接口:
public interface IEmployee {
void doing(String command);
}
创建一个经理类:
/**
* 项目经理类
*/
public class Leader implements IEmployee {
private Map<String, IEmployee> targetMap = new HashMap<String, IEmployee>();
public Leader() {
targetMap.put("登录注册", new EmployeeA());
targetMap.put("邀请好友", new EmployeeB());
}
public void doing(String command) {
targetMap.get(command).doing(command);
}
}
创建两个员工类
public class EmployeeA implements IEmployee {
public void doing(String command) {
System.out.println("我是员工A,我开始做:" + command +"功能");
}
}
public class EmployeeB implements IEmployee {
public void doing(String command) {
System.out.println("我是员工B,我开始做:" + command + "功能");
}
}
最后创建一个老板类:
public class Boss {
public void command(String command, Leader leader) {
leader.doing(command);
}
}
测试代码:
public static void main(String[] args) {
// 老板委派项目经理去做 '登录注册功能' -> 项目经理按照功能分配到具体员工身上 -> 员工开始根据需求开始干活
new Boss().command("登录注册", new Leader());
}
运行结果: 我是员工A,我开始做:登录注册功能