spring源码设计模式分析(七)-委派模式

简介: spring源码设计模式分析(七)-委派模式

委派模式:

自己做不了,需要委派另外一个人去做,自己不想去做的事情,去交给另外个人去做,自己想要看到的是结果就行了,这时就是委派。

比如在公司中 ,项目经理接到的任务,然后项目经理把任务下发到他底下的组长,码农,然后项目经理只要看到任务的结果就行了。功劳是项目经理的,苦劳是组长的,码农的。

在程序中:类B和类A是两个互相没有任何关系的类,但是B具有A一模一样的方法和属性;并且调用B中的方法/属性就是调用A中同名的方法和属性。

B好像就是一个受A授权委托的中介,第三方的代码不需要知道A的存在,也不需要和A发生直接的关系,通过B就可以直接使用A的功能,这样既能够使用A的公众功能,又能够很好的将A保护起来。

特点:

1、类似中介的功能(委托机制)

2、持有贝托人的引用

3、不关心过程,只关心结果。

委托模式是一对一,而中介模式是多对多的。

在 spring中BeanDefinitionParserDelegate将BeanDefinitionParser解析功能进行委托,来进行解析bean标签封装成beanDefinition对象。

代码如下:1、提供一个PM的类:项目经理

  1. package com.weizhaoyang.delegate;

  2. /**
  3. * 项目经理
  4. */
  5. public class PM {
  6.    //依赖Enginer,保护委托类,防止写在外面的话会被修改
  7.    private Enginer  enginer=new Enginer();  
  8.    /**
  9.     * 完成任务
  10.     */
  11.    public  String   completeTask(){
  12.        //这里不会产生任何增强[做了任何操作就是委派模式了]    
  13.        return enginer.completeTask();
  14.    }
  15. }

2、提供一个工程师的类:

  1. package com.weizhaoyang.delegate;

  2. /**
  3. * 工程师
  4. */
  5. public class Enginer {
  6.    /**
  7.     * 完成任务
  8.     */
  9.    public  String   completeTask(){
  10.        return "完成任务";
  11.    }
  12. }

3、提供一个测试的类:

  1. package com.weizhaoyang.delegate;

  2. public class DeleGateTest {
  3.    public static void main(String[] args) {
  4.        PM pm =new PM();
  5.        System.out.println(pm.completeTask());
  6.    }
  7. }

运行的结果如下:自己不完成任务,让工程师完成任务

总结:和代理模式的区别:委派模式不会产生新的功能

相关文章
|
10小时前
|
设计模式 Java Spring
spring源码设计模式分析-代理设计模式(二)
spring源码设计模式分析-代理设计模式(二)
|
10小时前
|
设计模式 Java Spring
spring源码设计模式分析(五)-策略模式
spring源码设计模式分析(五)-策略模式
|
10小时前
|
设计模式 搜索推荐 Java
spring源码设计模式分析(三)
spring源码设计模式分析(三)
|
10小时前
|
设计模式 存储 Java
spring源码设计模式分析(一)
spring源码设计模式分析(一)
|
10小时前
|
设计模式 Java 数据库
spring源码设计模式分析(八)-访问者模式
spring源码设计模式分析(八)-访问者模式
|
10小时前
|
设计模式 Java Spring
spring源码设计模式分析(六)-模板方法模式
spring源码设计模式分析(六)-模板方法模式
|
4月前
|
设计模式 搜索推荐 数据库连接
第二篇 创建型设计模式 - 灵活、解耦的创建机制
第二篇 创建型设计模式 - 灵活、解耦的创建机制
|
1月前
|
设计模式
设计模式的基础问题之代理模式在工作中的问题如何解决
设计模式的基础问题之代理模式在工作中的问题如何解决
|
设计模式 算法 Java
java实现23种设计模式-策略者模式
java实现23种设计模式-策略者模式
120 0
java实现23种设计模式-策略者模式
|
设计模式 Java Spring
Java代理设计模式
Java代理设计模式是非常常用的设计模式,像spring中就使用了很多的代理模式 使用代理我们可以对一个类进行增强或者缩减功能;代理可以分为静态代理和动态代理 静态代理:代理对象在编译期,就已经被编译成class,在运行之前就已经存在了 动态代理:代理对象是在运行期间通过反射生成的
66 0