委派模式的作用
负责调度和分配任务,和代理模式有些像,但是代理模式注重的是过程,委派模式注重的是结果。
举例
公司领导将项目给项目经理去做,但是项目经理不会一个人将所有的工作全部完成,他会根据需求将任务分配给不同的员工去实现。
代码展示
线初始化三名员工
//每个员工都有自己工作领域,
public interface Worker {
void doWork();
}
//员工A
public class WorkerA implements Worker {
@Override
public void doWork() {
System.out.println("我是A, 是一个前端开发工程师小姐姐,leader让我去做个页面");
}
}
//员工B
public class WorkerB implements Worker {
@Override
public void doWork() {
System.out.println("我是B, 是一个后端开发工程师小哥哥,leader让我去写一个接口");
}
}
//员工C
public class WorkerC implements Worker {
@Override
public void doWork() {
System.out.println("我是C, 是个DBA,leader让我给表加上索引");
}
}
初始化leader
public class LeaderA {
private Map<String, Worker> workers = new HashMap<>();
// 每个leader都已经知道了自己的直接下属
public LeaderA() {
workers.put("front",new WorkerA());
workers.put("end",new WorkerB());
workers.put("db",new WorkerC());
}
// leader调度下属去完成工作
public void doCommand(String command) {
System.out.println("接到boss分配的指令:" + command +" 并分配给相关员工去执行");
Worker worker = workers.get(command);
if(worker == null)
System.out.println("这个需求实现不了");
else
worker.doWork();
}
}
初始化boss
public class Boss {
//boss将整个项目给配给指定的leader去做
public void command(String command, LeaderA leader){
System.out.println("boss将任务分配个leader");
leader.doCommand(command);
}
}
测试
public class DetegateTest {
public static void main(String[] args) {
Boss boss = new Boss();
boss.command("front", new LeaderA());
}
}