委派模式
定义
又叫委托模式,是一种面型对象的设计模式,允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用和分配任务,是一种特殊的静态代理,可以理解我全权代理,但是代码模式注重过程,而委派模式注重结果。属于行为型模式。
角色
- 抽象任务角色(Task):定义一个接口,它有若干实现类。
- 委派角色(Delegate):负责在各个具体角色实例之间做出决策,屏判断调用具体实现的方法。
- 具体任务角色(Concrete)真正执行任务的角色
应用实例
BOSS给Leader下达任务,leader会根据实际情况给每一个员工派发工作任务,待员工把任务完成后,再有Leader汇报工作任务
public interface IEmployee {
void doing(String task);
}
public class EmployeeA implements IEmployee{
protected String goodAt = "编程";
@Override
public void doing(String task) {
System.out.println(String.format("我是员工A,我擅长 %s ,现在开始做 %s 工作",goodAt, task));
}
}
public class Leader implements IEmployee{
private final Map<String, IEmployee> employeeMap = new HashMap<String, IEmployee>();
public Leader() {
employeeMap.put("爬虫", new EmployeeA());
employeeMap.put("海报", new EmployeeB());
}
@Override
public void doing(String task) {
if (!employeeMap.containsKey(task)) {
System.out.println(String.format("这个任务:%s 超出我的能力范围", task));
return;
}
employeeMap.get(task).doing(task);
}
}
public class Boss {
public void command(String task, Leader leader){
leader.doing(task);
}
}
public class test {
public static void main(String[] args) {
new Boss().command("海报",new Leader());
}
}
委派模式在源码中的使用
JVM的双亲委派模型
优点
通过任务委派能够将一个大型任务细化,然后通过统一管理这些子任务的完成情况实现任务的跟进,能够加快任务执行的效率
缺点
任务委派方式需要根据任务的复杂程度进行不同的改变,在任务比较复杂的情况下可能需要进行多重委派容易造成紊乱。