千家信息网

什么是Spring委派模式

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"什么是Spring委派模式",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"什么是Spring委派模式"吧!理解首先委派模式不属于23
千家信息网最后更新 2026年11月01日什么是Spring委派模式

这篇文章主要讲解了"什么是Spring委派模式",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"什么是Spring委派模式"吧!

理解

首先委派模式不属于23种设计模式。

所谓委派,个人理解是:将为达到最终结果的事情交给其他人或中间人来干,我只要最终结果,其他的事情,由我委派的人来安排。

更直白的表达就是,比如,我们想要盖一栋楼房,盖完之后我要刷漆,这些事情我自己肯定不能做,所以我这时候就会去找一个"包工头"来帮我完成这件事情,我只要告诉"包工头"我要盖房子、我要给房子刷漆等命令,其他的事情我不管,最终能够交付给我这个刷完漆房子就行。那么"包工头"也不可能自己来干的吧,这个时候他就会去找人,盖楼房的、刷漆的等等;然后叫他们来干这件事情,干完之后,交付给我一个刷完漆的房子即可。这个过程也就是委派模式的一个体现。

委派模式看上去和我们之前所说的"静态模式"非常相似,它可以说是一种特殊情况的静态代理的全权代理。但是也是有区别的,"静态代理"更注重的是过程,而"委派模式"只注重"结果"。

示例

我们现在就以上述中的例子,用代码来实现以下:

代码

先创建工人抽象类接口,他们都具有干活的功能 Worker :

/** * 抽象 工人 * * @author EamonZzz * @date 2019-10-26 15:09 */public interface Worker {    /**     * 干活     *     * @param command 听命令干活     */    void doWork(String command);}

然后有一个工人A,砌砖砌的很好,很适合盖楼,WorkerA:

/** * 工人A 他砌砖砌的很好,所以叫来盖楼比较好 * * @author EamonZzz * @date 2019-10-26 15:11 */public class WorkerA implements Worker {    @Override    public void doWork(String command) {        System.out.println("我是工人A,包工头叫我 " + command);    }}

然后再来一个工人B,他是专业刷漆的 WorkerB:

/** * 工人A 他砌砖砌的很好,所以叫来盖楼比较好 * * @author EamonZzz * @date 2019-10-26 15:11 */public class WorkerA implements Worker {    @Override    public void doWork(String command) {        System.out.println("我是工人A,包工头叫我 " + command);    }}

再来找一个包工头,包工头也是一名工人,但是这个包工头主要是组织工人干活,Contractor:

/** * 包工头(也是一名工人),承接项目,分配工人 * * @author EamonZzz * @date 2019-10-26 15:07 */public class Contractor implements Worker {    private Map targets = new HashMap();    public Contractor() {        targets.put("盖楼", new WorkerA());        targets.put("刷漆", new WorkerB());    }    /**     * 包工头不需要自己干活     * @param command     */    @Override    public void doWork(String command) {        targets.get(command).doWork(command);    }}

最后就是有盖楼刷漆的需求的人,Boss:

/** * 我,需要盖楼的人,给包工头下达盖楼、刷漆的命令 * * @author EamonZzz * @date 2019-10-26 15:06:09 **/public class Boss {    /**     * 下达 请求     *     * @param command     * @param contractor     */    public void command(String command, Contractor contractor) {        contractor.doWork(command);    }}

来看一下测试类:

/** * @author EamonZzz * @date 2019-10-26 15:23 */public class BossTest {    @Test    public void test() {        Boss boss = new Boss();        boss.command("盖楼", new Contractor());        boss.command("刷漆", new Contractor());    }}

最终结果:

我是工人A,包工头叫我 盖楼我是工人B,包工头叫我 刷漆

类图

这个过程就模拟完毕,Boss 给包工头下达命令说我要盖楼,然后包工头就去找能够盖楼的人去盖楼;然后下达命令说,我的楼房需要刷漆了,包工头就去找刷漆的人来干这件事情。

SpringMVC中使用委派模式的场景

在SpringMVC中,也有委派模式的身影,比如我们最常见的 DispatcherServlet 它用来将我们前端URL传过来的请求,分发到相应的 Controller 控制器来处理请求,那么它是怎么来完成这一过程的呢?

其实结合上面的实例场景就不难分析出来原理。


总结

对于"委派模式"和"静态代理模式"的区别,在文章开头已经提到过,"静态代理"注重过程,代理类和被代理类都要去实现一个接口;而"委派模式"更注重结果,Boss不需要实现Worker 这个接口。就拿敲代码这个能力来说,"静态代理"的Boss类需要会敲代码,而"委派模式"中的Boss则不需要会敲代码。

感谢各位的阅读,以上就是"什么是Spring委派模式"的内容了,经过本文的学习后,相信大家对什么是Spring委派模式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

模式 包工头 包工 委派 工人 代理 事情 静态 代码 命令 结果 过程 我要 房子 就是 接口 学习 内容 场景 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 互联网科技工作委员会副主任毛军 金融科技还是互联网 浩特互联网科技 贷财互联网科技 善班互联网科技有限公司 上海亿帐通互联网科技 互联网 科技服务平台 丰台科技园 互联网公司 哈尔滨新华互联网科技学院 坤平互联网科技 江苏苏星互联网科技有限公司 上海创道互联网络科技有限公司 广州燕处互联网科技有限公司 济南小医互联网科技有限公司招聘 云鲸互联网络科技有限公司 湖北辰鑫科技互联网 玉溪新华互联网科技怎么选 互联网科技创新方面的资料 互联网高科技绘画 互联网与科技发展 互联网最新的科技有限公司 无线互联网科技 互联网科技公司介绍 天速互联网络科技有限公司 互联网之后的科技是什么 翼展科技 首家互联网医院 科技互联网经济论坛 美国五大互联网科技公司市值多少 互联网 科技节活动 微视频大赛
0