委派模式其实并不是常用的二十三种设计模式,它是代理模式和策略模式的组合使用。
举个例子:
比如说,boss将任务委派给项目经理,项目经理按照员工所擅长的领域(前端,后端,测试,美工等等)权衡的方式(策略)多种,但是项目经理并不干活,(代理)给其他员工。
代码示例:
public interface EmpI {
public void doing();
}
public class EmpA implements EmpI {
@Override
public void doing() {
System.out.println("成功完成页面开发任务");
}
}
public class EmpB implements EmpI {
@Override
public void doing() {
System.out.println("成功完成后台任务");
}
}
import java.util.HashMap;
import java.util.Map;
public class Manager {
private Map<String ,EmpI> targets = new HashMap<String ,EmpI>();
public Manager(){
targets.put("前台",new EmpA());
targets.put("后台",new EmpB());
}
public void dispatch(String command){
targets.get(command).doing();
}
}
public class Boss {
public static void main(String[] args) {
new Manager().dispatch("前台");
}
}
运行结果:
image.png
在spring mvc中的DispatcherServlet就用到了委派模式。
后续我会写一篇《手写实现spring mvc框架》来深入探讨此模式的运用。














网友评论