委派模式的定义
负责调度任务和分配任务.跟代理模式有些相似,代理模式注重过程,而委派模式注重结果.
boss把任务给leader,而leader做了一个任务的分配和调度的工作,自己没有做工作,而是把具体工作交给具体的执行者去做。
委派模式实例
执行的接口
/**
* @Project: spring
* @description: 执行的接口
* @ModificationHistory who when What
**/
public interface IExcuter {
void excute(String command);
}
leader
/**
* @Project: spring
* @description: leader 委派者 任务分发的作用
* @ModificationHistory who when What
**/
public class Leader implements IExcuter {
private Map<String,IExcuter> targets = new HashMap<String,IExcuter>();
public Leader() {
targets.put("加密",new ExcuterA());
targets.put("登录",new ExcuterB());
}
@Override
public void excute(String command) {
targets.get(command).excute(command);
}
}
普通员工A
/**
* @Project: spring
* @description: 员工A执行某项命令
* @ModificationHistory who when What
**/
public class ExcuterA implements IExcuter{
@Override
public void excute(String command) {
System.out.println("员工A 开始做"+command+"的工作");
}
}
普通员工B
/**
* @Project: spring
* @description: 员工B执行某项命令
* @ModificationHistory who when What
**/
public class ExcuterB implements IExcuter{
@Override
public void excute(String command) {
System.out.println("员工B 开始做"+command+"的工作");
}
}
boss
/**
* @Project: spring
* @description: boss 模拟客户执行任务
* @ModificationHistory who when What
**/
public class Boss
{
public static void main(String[] args) {
Leader leader = new Leader();
//看上去好像是我们的项目经理在干活
//但实际干活的人是普通员工
//这就是典型,干活是我的,功劳是你的
leader.excute("登录");
leader.excute("加密");
}
}
员工B开始做登录的工作
员工A开始做加密的工作