代码拉取完成,页面将自动刷新
委派模式不属于GOF23种设计模式,委派模式的基本作用就是负责任务的调用和分配,这可以看做是一种特殊情况想下的静态代理。委派模式对外隐藏了具体实现,仅将委派者暴露给外部,委派者负责挑选执行者,并将任务交给它,进行执行。
Spring
中的DispatcherServlet
中就用到了,委派模式,DispatcherServlet
会根据 http
请求中的方法类型、url参数等,挑选出 controller
进行执行,随后将结果返回。
在现实生活中也经常有委派模式的场景发生,如 老板将任务派发给项目经理,项目经理在根据实际情况给每个员工派发任务,待员工完成任务后,再由项目经理汇报工作进度给老板。
员工接口
public interface IEmployee {
void doing(String command);
}
员工A
public class EmployeeA implements IEmployee {
@Override
public void doing(String command) {
System.out.println("我是员工 A, 我现在开始干" + command + "工作");
}
}
员工B
public class EmployeeB implements IEmployee {
@Override
public void doing(String command) {
System.out.println("我是员工 B, 我现在开始干" + command + "工作");
}
}
经理
public class Leader implements IEmployee {
private Map<String, IEmployee> targets = new HashMap<String, IEmployee>();
public Leader() {
targets.put("加密", new EmployeeA());
targets.put("登录", new EmployeeB());
}
//项目经理自己不干活
@Override
public void doing(String command) {
targets.get(command).doing(command);
}
}
老板
public class Boss {
public void command(String command,Leader leader){
leader.doing(command);
}
}
调用
public static void main(String[] args) {
//客户请求( Boss) 、 委派者( Leader) 、 被被委派者( Target)
//委派者要持有被委派者的引用
//代理模式注重的是过程, 委派模式注重的是结果
//策略模式注重是可扩展( 外部扩展) , 委派模式注重内部的灵活和复用
//委派的核心: 就是分发、 调度、 派遣
//委派模式: 就是静态代理和策略模式一种特殊的组合
new Boss().command("登录", new Leader());
}
我们可以看到,老板派发的任务,经过经理发到了具体的人的手中并执行。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。