在spring中委派模式用的比较多,在经常使用的23种设计模式中实际上是没有委派模式的影子的。java
在spring中体现:Spring MVC框架中的DispatcherServlet其实就用到了委派模式。spring
委派模式的做用:基本做用就是负责任务的调用和分配,跟代理模式很像,能够看作是一种特殊状况下的静态代理的全权代理,可是代理模式注重过程,而委派模式注重结果。设计模式
利用一张图简述委派模式,下图简单说明了老板把任务给了项目经理,而项目经理将任务拆分,分给一个个it攻城狮,本身没有作工做,而是把具体工做交给具体的执行者去作。框架
public interface IExcuter { void excute(String command); }
public class ExcuterA implements IExcuter{ @Override public void excute(String command) { System.out.println("员工A 开始作"+command+"的工做"); } }
public class ExcuterB implements IExcuter{ @Override public void excute(String command) { System.out.println("员工B 开始作"+command+"的工做"); } }
public class Leader implements IExcuter { private Map<String,IExcuter> targets = new HashMap<String,IExcuter>(); public Leader() { targets.put("加密",new ExcuterA()); targets.put("登陆",new ExcuterB()); } @Override public void excute(String command) { targets.get(command).excute(command); } }
public class Boss { public static void main(String[] args) { Leader leader = new Leader(); //看上去好像是咱们的项目经理在干活 //但实际干活的人是普通员工 //这就是典型,干活是个人,功劳是你的 leader.excute("登陆"); leader.excute("加密"); } }
参考:https://www.jianshu.com/p/38acf37b1e1fide