津津乐道设计模式 - 委派模式详解(以家庭弟位让你彻底明白)

news/2025/2/12 16:18:59/

在这里插入图片描述

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

津津乐道设计模式 - 委派模式详解

  • 什么是委派模式
  • 生活案例
  • 代码案例
  • 在开源框架中查找委派模式身影
  • 结语

什么是委派模式

委派模式(Delegate Pattern)是一种软件设计模式,它允许一个对象(委派者)将任务委派给其他对象(委派对象)来执行,以实现任务的分发和处理。跟代理模式有点像,但是代理模式注重过程,而委派模式注重结果,我们可以认为委派模式就是一种特殊情况下的静态全权代理,比如Spring中大家熟悉的DispatcherServlet

生活案例

在生活场景中,可以通过以下例子来说明委派模式:

假设目前你是三口之家,妈妈、孩子、爸爸、宠物狗,首先我们都需要认清爸爸在家庭的弟位,孩子 > 妈妈 > 爸爸=宠物狗 😂😂😂😂;

  • 现在孩子饿了,会告诉妈妈,妈妈再委派爸爸去做饭;
  • 现在孩子困了,会告诉妈妈。妈妈再委派爸爸去讲解睡前故事哄孩子睡觉;
  • 现在孩子无聊了,会告诉妈妈。妈妈再委派宠物狗陪孩子玩;

在这个场景中,妈妈是委派者,负责接收孩子需求并分配给爸爸处理。而爸爸是委派对象,他根据妈妈的指示负责处理各个方面的生活安排。比如洗衣、做饭、拖地程等。

这种委派模式的好处是,妈妈可以集中精力照顾孩子这个小祖宗,而将具体的任务分配给爸爸来完成。委派对象也能更加专注地处理自己擅长的任务,提高工作效率和质量(说白了爸爸就要求什么都会 😮‍💨)。

代码案例

上面一家三口案例中,我们使用JAVA代码来给大家演示一下

/*** 定义工作接口*/
public interface Worker {void doing(String thing);
}

创建委派对象爸爸和狗狗

/*** 委派对象 爸爸*/
public class Father implements Worker {@Overridepublic void doing(String thing) {System.out.println("爸爸开始完成妈妈委托: " + thing);// 具体的任务处理逻辑// ...}
}/*** 委派对象 狗狗*/
public class Dog implements Worker {@Overridepublic void doing(String thing) {System.out.println("狗狗开始完成妈妈委托: " + thing);// 具体的任务处理逻辑// ...}
}

创建妈妈角色

/*** 定义妈妈 委派者*/
public class Mother implements Worker {private static Map<String, Worker> workerMap = new HashMap<>();public Mother() {workerMap.put("cooking", new Father());workerMap.put("play", new Dog());}/*** 做事情** @param thing 委派任务名*/@Overridepublic void doing(String thing) {System.out.println("我是妈妈,小祖宗Boss派活了: " + thing + ",我来指定委派任务: " + thing);if (workerMap.containsKey(thing)) {workerMap.get(thing).doing(thing);} else {System.err.println("目前没有可以指派的委派对象");}}}

创建孩子角色 - BOSS

/*** 小孩(老板)*/
public class Boss {private Mother mother;public void setMother(Mother mother) {this.mother = mother;}public void command(String thing) {System.out.println("我是小祖宗,我现在需要: " + thing);mother.doing(thing);}
}

最后测试类

public class DelegatePatternTest {public static void main(String[] args) {//创建孩子啊 小祖宗Boss boss = new Boss();// 爸爸做饭boss.setMother(new Mother());boss.command("cooking");System.out.println("================================");// 狗狗陪玩boss.command("play");}
}

最终输出如下:
在这里插入图片描述

在开源框架中查找委派模式身影

上面我们就提到了Spring中的DispatcherServlet就使用了委派模式。
前端请求都统一由 DispatcherServletdoService() 方法处理,然后在 doService() 方法中调用 doDispatch() 方法,在 doDispatch() 方法中,进行复杂的任务进行分解,分发执行并通过一个委派者角色,会获取业务处理的 handler ,执行 handle() 方法处理请求结果。

其实还有很多地方都使用到了委派模式,代码中一般 DelegateDispatcher 结尾的都是委派类。大家可以搜索Spring源码查阅

结语

在软件设计中,委派模式可以帮助实现任务的分发和协调,使得代码结构更加清晰和可维护。委派者负责接收任务请求并选择合适的委派对象来处理,而委派对象则负责具体的任务执行。这种模式可以将任务分解,实现任务的解耦和灵活性,同时提高代码的可重用性和可扩展性。

总结起来,委派模式是一种通过将任务委派给其他对象来实现任务分发和处理的设计模式。它可以在生活场景中,例如旅行社经理委派员工安排旅行活动,或在软件设计中,实现任务的解耦和协调。

样例代码:https://github.com/lhmyy521125/toher-designmode


http://www.ppmy.cn/news/536222.html

相关文章

对供水产销差产生原因及解决措施的思考

供水产销差一直是制约供水企业发展的一个瓶颈&#xff0c;如何降低产销差也就成为了供水企业共同研讨的课题。笔者作为基层管理者在工作时对供水产销差的产生原因及解决措施进行了一番思考&#xff0c;以下是结合实际情况对这方面的一些体会。 一、供水产销差率普遍存在 供…

九齐单片机应用-小家电开发(1)

** 锂电类便携式小家电应用开发-打蛋器 1&#xff1a;应用需求&#xff1a;PWM输出&#xff0c;复位电压2.7V&#xff0c;重启电机电压3.0V 2&#xff1a;结合需求&#xff0c;选用九齐系列单片机中的051F作为主控芯片&#xff0c;配合9017给锂电进行充电。 3&#xff1a;051…

ES-索引管理

前言 数据类型 ​ 搜索引擎是对数据的检索&#xff0c;所以我们先从生活中的数据说起。我们生活中的数据总体分为两种&#xff1a; 结构化数据非结构化数据 结构化数据&#xff1a; 也称作行数据&#xff0c;是由二维表结构来逻辑表达和实现的数据&#xff0c;严格地遵循数…

计算机毕业设计Java家电售后管理系统演示录像2021(源码+系统+mysql数据库+lw文档)

计算机毕业设计Java家电售后管理系统演示录像2021(源码系统mysql数据库lw文档) 计算机毕业设计Java家电售后管理系统演示录像2021(源码系统mysql数据库lw文档) 本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;ide…

计算机毕业设计Java智能家电商城(系统+源码+mysql数据库+lw文档)

计算机毕业设计Java智能家电商城(系统源码mysql数据库lw文档) 计算机毕业设计Java智能家电商城(系统源码mysql数据库lw文档) 本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse 前端技术&#xff1a;L…

完美诠释中国智造 京东家电携合作伙伴闪耀AWE

3月14日&#xff0c;作为全球瞩目的三大消费电子和家电展会之一&#xff0c;中国家电及消费电子博览会&#xff08;简称AWE&#xff09;在上海开幕&#xff0c;京东作为唯一受邀的零售平台参与此次盛会。 作为中国家电产业互联网升级转型的引领者&#xff0c;京东一直与AWE深度…

2022CAEE中国国际家电与电子电器供应链博览会

中国国际家电与电子电器供应链博览会 中国国际家电零部件、材料、技术设备展览会 China International Appliance & Electronics Supply Chain Expo 零部件材料技术与设备设计服务 广东展上海展合肥展青岛展 ——四展联袂 商机无限—— 邀 请 函 广东展&#xff1a;…

人工智能将改变家电使用方式

2019独角兽企业重金招聘Python工程师标准>>> 高档烤箱有几十个按键&#xff0c;用一个烤箱制作食物&#xff0c;要成为一个工程师才行。那要是用高档洗衣机洗衣服&#xff0c;岂不是还要经过专门的培训了。 用人工智能恰好可以完美解决这种复杂的家电使用方式&#…