概念和应用场景
- 概念
作用是负责任务的调用和分配任务,是一种特殊的静态代理,区别是代理模式注重过程,委派模式注重结果
写法
public class Boss {
public void command(String task,Leader leader){
leader.doing(task);
}
}
public interface IEmployee {
void doing(String task);
}
public class EmployeeA implements IEmployee {
protected String goodAt = "编程";
public void doing(String task) {
System.out.println("我是员工A,我擅长" + goodAt + ",现在开始做" +task + "工作");
}
}
public class EmployeeB implements IEmployee {
protected String goodAt = "平面设计";
public void doing(String task) {
System.out.println("我是员工B,我擅长" + goodAt + ",现在开始做" +task + "工作");
}
}
Leader类只负责分配
public class Leader implements IEmployee {
private Map<String,IEmployee> employee = new HashMap<String,IEmployee>();
public Leader(){
employee.put("爬虫",new EmployeeA());
employee.put("海报图",new EmployeeB());
}
public void doing(String task) {
if(!employee.containsKey(task)){
System.out.println("这个任务" +task + "超出我的能力范围");
return;
}
employee.get(task).doing(task);
}
}
public class Test {
public static void main(String[] args) {
new Boss().command("海报图",new Leader());
new Boss().command("爬虫",new Leader());
new Boss().command("卖手机",new Leader());
}
}
源码中的应用
ClassLoader类的LoadClass方法,即双亲委派机制
Method类的invoke方法委托给了ma去做,自己只返回结果
总结,它有点门面模式那种感觉,不过它只作用于方法,不像门面模式是封装全部的接口