委派模式有点像代理模式又有点像策略模式。
例如:公司老板给项目经理下达任务,将任务全权交给项目经理,由项目经理根据一定的策略将任务分配给小组成员,项目经理从头跟到尾。项目经理就像一个受老板授权的中介,老板不需要和小组成员直接联系,甚至可以不知道他的存在。
我们员工实现同一个干活的接口
public interface ITarget {
public void doSomething(String command);
}
员工A和员工B(真正做事的人)做自己擅长的工作
public class TargetA implements ITarget {
@Override
public void doSomething(String command) {
System.out.println("我是员工A,现在开始干" + command + "");
}
}
public class TargetB implements ITarget {
@Override
public void doSomething(String command) {
System.out.println("我是员工B,现在开始干" + command + "");
}
}
项目经理持有所有的小组成员,根据一定的策略选择干活的人
public class Leader implements ITarget {
private Map<String, ITarget> targets = new HashMap<>();
/**
* 项目经理持有小组成员可供选择,类似策略模式
*/
public Leader() {
targets.put("加密", new TargetA());
targets.put("登录", new TargetB());
}
public void doSomething(String command) {
targets.get(command).doSomething(command);
}
}
领导下达命令
public class Boss {
public static void main(String[] args) {
new Leader().doSomething("登录");
}
}
从上面可以看出来委派模式就是静态代理和策略模式的一种特殊组合,
代理模式注重的是过程,委派模式注重的是结果。策略模式注重的是可扩展(外部扩展),
委派模式注重的是内部的灵活和复用。