设计模式——委派模式
一、委派模式介绍
委派模式(Delegate Pattern),相较于代理模式,可以看做是一种特殊情况下的静态代理与策略模式的一种特殊组合。它的基本作用就是负责任务的调用和分配。
委派模式的核心是:1)分发;2)调度;3)派遣
二、委派模式代码实例
场景实例
实现场景:老板给项目经理下达任务,再由项目经理根据实际情况给每个员工派发任务,要求如下
1)员工A去复印,员工B去充话费
2)用委派代理模式
public interface IEmployee {
void doing(String command);
}
public class Leader implements IEmployee {
private Map<String,IEmployee> targets = new HashMap<>();
public Leader(){
targets.put("复印",new EmployeeA());
targets.put("充话费",new EmployeeB());
}
@Override
public void doing(String command) {
targets.get(command).doing(command);
}
}
public class EmployeeA implements IEmployee {
@Override
public void doing(String command) {
System.out.println("我是A,我要去"+command);
}
}
public class EmployeeB implements IEmployee{
@Override
public void doing(String command) {
System.out.println("我是B,我要去"+command);
}
}
public class Boss {
public void command(String command, Leader leader){
leader.doing(command);
}
}
public class Client {
public static void main(String[] args) {
new Boss().command("充话费",new Leader());
}
}
代理模式与委派模式的区别
- 代理模式注重的是过程;委派模式注重的是结果
策略模式与委派模式的区别
- 策略模式注重可扩展性;委派模式注重类内部的灵活性与可复用性
三、委派模式在实际中的运用
Spring MVC中的DispatcherServlet实现委派模式
此处的DispatcherServlet类相当于原案例中的Leader类角色