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

这篇具有很好参考价值的文章主要介绍了津津乐道设计模式 - 委派模式详解(以家庭弟位让你彻底明白)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人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 {
    @Override
    public void doing(String thing) {
        System.out.println("爸爸开始完成妈妈委托: " + thing);
        // 具体的任务处理逻辑
        // ...
    }
}

/**
 * 委派对象 狗狗
 */
public class Dog implements Worker {
    @Override
    public 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 委派任务名
     */
    @Override
    public 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文章来源地址https://www.toymoban.com/news/detail-497174.html

到了这里,关于津津乐道设计模式 - 委派模式详解(以家庭弟位让你彻底明白)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解锁Spring Boot中的设计模式—03.委派模式:探索【委派模式】的奥秘与应用实践!

    委派模式 是一种负责任务的调度和分配模式,类似于代理模式但更注重结果而非过程。它可以被视为一种特殊情况下的静态代理的全权代理,但并不属于GOF 23种设计模式之一,而是归类为行为型模式。 委派模式在Spring框架中广泛应用,其中最常见的例子是 DispatcherServlet ,它

    2024年02月19日
    浏览(41)
  • 设计模式详解-外观模式

    类型:结构型模式 实现原理:定义了一个高层接口,向现有的系统中的一组接口提供一致的界面 目的:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口,使系统更加容易使用 何时使用:简化复杂系统,方便操作 解决方法:对客户端和系统解耦,让外观类

    2024年02月12日
    浏览(27)
  • 设计模式详解-代理模式

    类型:结构型模式 实现原理:创建具有现有对象的对象 作用:为其他对象提供一种代理以控制对这个对象的访问。 解决的问题:由于对象的访问条件不一,直接访问对象会造成麻烦问题 解决问题的方法:增加中间层。 何时使用:想在访问一个类时做一些控制。 实现核心:

    2024年02月12日
    浏览(31)
  • 设计模式-原型模式详解

    简介设计模式 设计模式是在软件开发中常见问题的解决方案,它们是经过实践和经验总结出来的可重用的设计思想和解决方案。设计模式通过提供通用的架构、原则和指导,帮助开发人员更有效地编写高质量的代码。 设计模式分为三个主要类别: 创建型模式:关注对象的创

    2024年02月10日
    浏览(27)
  • 设计模式详解-桥接模式

    类型:结构型模式 实现原理:将抽象类和实现类分离,使其独立,然后使用接口再将二者连接起来。 意图:将抽象部分与实现部分分离,使它们都可以独立的变化。 主要解决:类变化频繁时用继承可能会出现的类爆炸问题。 如何解决:减少类的耦合关系,让类独立变化。

    2024年02月12日
    浏览(37)
  • 设计模式——桥接模式详解

    1.1⭐桥接模式的定义 维基百科: 桥接模式 是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。 百度百科: 桥接模式 是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,

    2024年02月06日
    浏览(35)
  • 设计模式详解-组合模式(整体部分模式)

    类型:结构型模式 特点:依据树形结构来组合对象,用来表示部分以及整体层次 作用:模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦,使用户对单个对象和组合对象的使用具有一致性。

    2024年02月12日
    浏览(29)
  • 设计模式详解-责任链模式

    类型:行为型模式 实现原理:为请求创建了一个接收者对象的链。对请求的发送者和接收者进行解耦,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 作用:避免请求发送者与接收者耦合在一

    2024年02月12日
    浏览(29)
  • 设计模式之原型模式详解

    在设计模式的系列文章中,我们前面已经写了 工厂模式 、 单列模式 、 建造者模式 ,在针对创建型模式中,今天想跟大家分享的是 原型模式 ,我觉的这种模式叫克隆模式会更佳恰当。原型模式的目的就是通过复制一个现有的对象来生成一个新的对象。 原型模式 使用原型实

    2024年02月12日
    浏览(30)
  • 设计模式——单例模式详解

    设计模式分为三种类型,共23种 创建型模式: 单例模式,抽象工厂模式,原型模式,建造者模式,工厂模式 结构性模式: 适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式 行为型模式: 模板方法模式,命令模式,访问者模式,迭代器模式,观

    2024年02月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包