设计模式之委派模式

一、委派模式应用场景

委派模式不属于GOF23种设计模式。

委派模式(Delegate pattern )的作用:负责任务的掉用和分配任务。

使用场景:Spring中的DispatcherServlet使用的就是委派模式。

生活例子:老板给经理下达命令叫员工干活,员工完成任务后由项目经理汇报结果给老板。

委派和代理的区别:委派模式可以看成是一种特殊的代理模式,静态代理的全权代理,代理注重的是过程,委派注重的结果

二、委派模式实现

组成部分:  客户请求,委派者,被委派者

客户请求----》创建一个boss类模拟客户请求

public class Boss {
    public void command(String command, Leader leader) {
        leader.doing(command);
    }
}

委派者-----》创建一个经理类模拟委派者

public class Leader {
    //员工登记
    Map targets = new HashMap();

    //添加被委派者的引用
     public Leader(){
         targets.put("外交",new EmployeeA());
         targets.put("技术",new EmployeeB());
     }

     public void  doing (String commed){
         targets.get(commed).doing(commed);
     }

}

被委派者----》员工类为被委派者

public interface IEmployee {
    void doing(String commed);
}

public class EmployeeA implements IEmployee {
    @Override
    public void doing(String commed) {
        System.out.println("我是员工A,我擅长外交,开始干"+commed+"活了");
    }
}

public class EmployeeB implements IEmployee {
    @Override
    public void doing(String commed) {
        System.out.println("我是员工B,我擅长技术,开始干"+commed+"活了");
    }
}

三、委派模式在源码中的应用

在 Spring 源码中,只要以 Delegate 结尾的都是实现了委派模式。

例如:BeanDefinitionParserDelegate 根据不同类型委派不同的逻辑解析 BeanDefinition。

你可能感兴趣的:(设计模式)