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. }

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

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

相关文章
|
15天前
|
XML Java 数据格式
Spring Core核心类库的功能与应用实践分析
【12月更文挑战第1天】大家好,今天我们来聊聊Spring Core这个强大的核心类库。Spring Core作为Spring框架的基础,提供了控制反转(IOC)和依赖注入(DI)等核心功能,以及企业级功能,如JNDI和定时任务等。通过本文,我们将从概述、功能点、背景、业务点、底层原理等多个方面深入剖析Spring Core,并通过多个Java示例展示其应用实践,同时指出对应实践的优缺点。
40 14
|
2月前
|
Java 调度 开发者
spring的@Scheduled()有几种定时模式?
【10月更文挑战第12天】spring的@Scheduled()有几种定时模式?
115 1
|
2月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
558 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
2月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
212 2
|
3月前
|
设计模式 Java Spring
spring源码设计模式分析(五)-策略模式
spring源码设计模式分析(五)-策略模式
|
3月前
|
负载均衡 Java 网络架构
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
154 5
|
3月前
|
消息中间件 设计模式 缓存
spring源码设计模式分析(四)-观察者模式
spring源码设计模式分析(四)-观察者模式
|
3月前
|
XML 存储 Java
Spring-源码深入分析(二)
Spring-源码深入分析(二)
|
3月前
|
XML 设计模式 Java
Spring-源码深入分析(一)
Spring-源码深入分析(一)
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
216 2