首页 > 其他分享 >设计模式-委派模式

设计模式-委派模式

时间:2024-06-16 16:10:39浏览次数:14  
标签:委派 task String void 模式 leader 任务 设计模式 public

委派模式

委派模式(Delegate Pattern)又叫委托模式,它允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用与分配任务,是一种特殊的静态代理,可以理解为全权代理。但是,代理过程注重过程,而委派模式注重结果。

角色:

抽象任务角色(Task):定义一个抽象接口,他有若干实现类。
委派者角色(Delegate):负责在各个具体角色实例之间做出决策,判断并调用具体实现的方法;
具体任务角色(Concrete):真正执行任务的角色

举例

老板Boss给项目经理Leader下达任务,项目经理根据实际情况给每个员工Employee派发工作任务,待员工把工作任务完成之后,再由项目经理汇报工作进度和结果给老板。

1、创建员工接口类:

package com.jdwa.delegate;

public interface IEmployee {
    default void init(){
        System.out.println("        +++++开始任务++++++");
    }
    void doing(String task);
}

2、创建负责编程的员工类

package com.jdwa.delegate;

public class ProgramEmployee implements IEmployee {
    protected String goodAt = "编程";

    @Override
    public void doing(String task) {
        System.out.println("        我是一名开发人员,擅长"+goodAt+"工作。");
    }
}

3、创建负责平面设计的员工类

package com.jdwa.delegate;

public class DesignEmployee implements IEmployee {
    protected String goodAt = "平面设计";
    @Override
    public void doing(String task) {
        System.out.println("        我是一名平面设计人员,擅长"+goodAt+"工作。");
    }
}

4、创建项目经理

package com.jdwa.delegate;

import java.util.HashMap;
import java.util.Map;

public class DeptLeader implements IEmployee {

    private Map<String,IEmployee> employees = new HashMap<>();

    public DeptLeader(){
        employees.put("爬虫",new ProgramEmployee());
        employees.put("海报图",new DesignEmployee());
    }
    @Override
    public void doing(String task) {
        System.out.println("    ===部门经理分发任务===");
        if (!employees.containsKey(task)){
            System.out.println("    任务"+task+"超出我的能力范围");
            return;
        }
        employees.get(task).init();
        employees.get(task).doing(task);
    }
}

5、创建老板类

package com.jdwa.delegate;

public class Boss {
    public void command(String task,DeptLeader leader){
        System.out.println("===老板开始部署任务===");
        leader.doing(task);
    }
}

6、创建客户端用于测试代码

package com.jdwa.delegate;

public class Client {
    public static void main(String[] args) {
        Boss boss = new Boss();
        DeptLeader leader = new DeptLeader();
        boss.command("海报图",leader);
        boss.command("爬虫",leader);
        boss.command("卖手机",leader);

    }
}

7、运行结果

===老板开始部署任务===
    ===部门经理分发任务===
        +++++开始任务++++++
        我是一名平面设计人员,擅长平面设计工作。
===老板开始部署任务===
    ===部门经理分发任务===
        +++++开始任务++++++
        我是一名开发人员,擅长编程工作。
===老板开始部署任务===
    ===部门经理分发任务===
    任务卖手机超出我的能力范围

8、类图

类图1.png

欢迎大家留言,以便于后面的人更快解决问题!另外亦欢迎大家可以关注我的微信公众号,方便利用零碎时间互相交流。共勉!

标签:委派,task,String,void,模式,leader,任务,设计模式,public
From: https://www.cnblogs.com/caozz/p/18250724/delegate

相关文章

  • (pdf)图解java多线程设计模式.pdf (结城浩)
    书:pan.baidu.com/s/1tGbGhhQ3Ez1SIkqdEREsjQ?pwd=eqp0提取码:eqp0线程基础知识:介绍线程的概念、生命周期、状态转换等基本内容,为后续的多线程设计打下基础。Java线程API:详细讲解Java中线程的创建、启动、控制以及线程间的协作机制,如Thread类、Runnable接口等。线程同步与互斥:......
  • 代理设计模式,框架AOP思想
    文章目录引言......
  • 最流行的部署模式概述
    蓝/绿部署:使用两种环境,保证零宕机;一个托管实时版本,而另一个测试新的更新。如果需要,此设置允许轻松回滚。金丝雀部署:首先向一小部分用户推出更改,从而实现性能监控和收集反馈。如果成功,更新可以逐步扩展到更多用户。滚动部署:分阶段更新软件,确保大部分系统保持运行。它非常适合需要连......
  • 设计模式-六大原则
    1.1手写笔记语雀笔记(这里的要美观一些)资料来源:https://www.bilibili.com/video/BV1uF411t7pK/?spm_id_from=pageDriver&vd_source=8cda1934c6f5a681b91bebf711df3c0chttps://refactoringguru.cn/design-patternshttps://www.runoob.com/design-pattern/design-pattern-t......
  • 设计模式——观察者模式(发布/订阅模式)
    观察者模式(发布/订阅模式)是一种行为模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使得它们能够自动......
  • Linux vim 文本编辑 操作文本 三种模式
    介绍vi是一个经典的行编辑器,支持模式编辑(包括普通模式、插入模式和命令模式)。vim保留vi核心功能的基础上,增加了多级撤销、语法高亮、插件支持等高级功能。两者的最大区别,简单的来说vim就是vi的增强版三种模式命令模式(CommandMode)默认进入的是命令模式。在这个模式......
  • 设计模式-组合模式
    组合模式组合模式,也称为整体部分模式,他的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性。(树形结构)组合与聚合的关系:组合生命周期保持一致。聚合具有不同的生命周期。角色:抽象根节点(Component):定义系统各......
  • 九星创客模式:创新引领新零售风潮
    九星创客模式确实是一种创新的商业模式,它结合了团队协作、多元化销售方式和激励机制,成功实现了产品的快速销售和客户群体的扩大。以下是关于九星创客模式的详细解析:1.团队结构与层级九星创客系统以团队为基础,每个成员都是团队的一部分,共同为达成销售目标而努力。系统设置了......
  • 稳定性与可持续性:九星创客模式的长期优势
    九星创客模式确实是一种创新的商业模式,它结合了团队协作、多元化销售方式和激励机制,成功实现了产品的快速销售和客户群体的扩大。以下是关于九星创客模式的详细解析:1.团队结构与层级九星创客系统以团队为基础,每个成员都是团队的一部分,共同为达成销售目标而努力。系统设置了......
  • java设计模式之-工厂模式
    工厂模式是一种创建对象的设计模式,它通过将对象的实例化过程封装在一个工厂类中,从而实现对象的创建和使用的解耦。它属于创建型模式的一种,可以帮助我们更加灵活地创建对象。工厂模式主要解决的问题是在对象的创建过程中,如果直接在代码中使用new关键字来创建对象,会导致代码的耦合......