一、委派模式的定义
委派模式(Delegate Pattern)
又叫委托模式. 它的基本作用就是负责任务的调度和任务的分配, 将任务的分配和执行分离开来. 可以看做是一种特殊情况下的静态代理的全权代理.
不属于GOF 23种设计模式之一.
属于行为型模式.
二、委派模式和代理模式的区别
- 委派模式是行为型模式, 代理模式是结构型模式.
- 委派模式注重的是任务派遣, 注重结果;
代理模式注重的是代码增强, 注重过程. - 委派模式是一种特殊的静态代理, 相当于全权代理.
三、SpringMVC中的委派模式
从图中可以看出dispatcherServlet更像是一个分发任务的分发者, 但其实springmvc本身就是一个大的委派.
- web浏览器发送请求给dispatchServlet
- dispatchServlet委派HandlerMapping去找到url所对应的方法。
- 通过HandlerMapping找到的方法dispatcherServlet委派处理器适配器去调用方法返回ModelAndView
- 紧接着委派视图解析器去渲染modelAndView
- 最终返回给web浏览器。
从上述流程可以看出,dispatcherServlet委派的对象不是同一类对象,而是三个大的类,HandlerMap,处理器,视图解析器。
四、总结
委派模式是一种设计思想,它想表达的是,尽量将工作分发给专门的对象去做
优点
通过任务委派能将一个大型的任务细化, 然后通过统一管理这些子任务的完成情况实现任务跟进, 能够加快任务的执行效率.
缺点
任务委派方式需要根据任务的复杂情况进行不同的改变, 在任务比较复杂的情况下可能需要进行多重委派, 容易造成紊乱.