1. 委派模式定义
委派模式(Delegate Pattern) 的基本作用就是负责任务的调度和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。
不属于GOF 23种设计模式之一
属于行为模式
2. 案例 boss-leader-employee
Boss类
public class Boss {public void command(String command, Leader leader){leader.doing(command);}}
boss类作为命令的发起者,不干活,交由手下的leader!
Leader类
public class Leader {//预先知道每个员工的特长和特征 分发任务private Map<String,Employee> register = new HashMap<>();public Leader(){register.put("加密", new EmployeeA());register.put("架构", new EmployeeB());}public void doing(String command){register.get(command).doing(command);}}
leader作为二把手,熟悉每个员工的技能,在了解到老板发布的命令之后,交由指定员工干活!
Employee员工接口
public interface Employee {public void doing(String command);}
通用员工接口,负责规范员工做事的约束!
EmployeeA 员工A
public class EmployeeA implements Employee{@Overridepublic void doing(String command) {System.out.println("我是员工A,我开始干活了,擅长加密,执行" + command);}}
员工A擅长加密工作!
EmployeeB 员工B
public class EmployeeB implements Employee{@Overridepublic void doing(String command) {System.out.println("我是员工B,我开始干活了,擅长架构,执行" + command);}}
员工A擅长架构工作!
DelegateTest委派测试
public class DelegateTest {public static void main(String[] args) {new Boss().command("加密", new Leader());new Boss().command("架构", new Leader());}}
3. SpringMVC对于委派模式的应用
类以Delegate结尾的一般都是委派,包含了Dispatcher
用户的请求通过servlet转化为java的逻辑
类似java中的
4. 委派模式的应用场景
委派模式作为代理,给用户提供唯一的访问入口,提升体验!
