美文网首页
设计模式-委派模式

设计模式-委派模式

作者: 东方欲晓_莫道君行早 | 来源:发表于2024-06-15 16:10 被阅读0次
委派模式

委派模式(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

相关文章

  • 设计模式-委派模式

    设计模式-委派模式 定义 委派模式(Delegate Pattern)又叫委托模式,是一种面向对象的设计模式,允许...

  • 设计模式之“委派模式”?!

    今天想要分享的是设计模式中的委派模式,说他是设计模式,但并不是23种设计模式之中的。 委派模式(Delegate)...

  • 委派模式

    委派模式 委派模式不属于GOF23种设计模式中。委派模式(DelegatePattern)的基本作用就是负责任务的...

  • 设计模式--委派模式

    1、介绍 Delegate,不属于GOF23种模式,行为模式。主要角色有三种: 抽象任务角色, 委派者角色, 具体...

  • 源码学习之设计模式(委托模式)

    今天要说的是委派模式。 使用起来 和代理模式有点像,在《设计模式之禅》中讲到代理模式就是委派模式,对于这个观点我不...

  • 手撸golang 行为型设计模式 委派模式

    手撸golang 行为型设计模式 委派模式 缘起 最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔...

  • 委派模式 java

    委派模式其实并不是常用的二十三种设计模式,它是代理模式和策略模式的组合使用。 举个例子:比如说,boss将任务委派...

  • Java设计模式——委派模式

    委派模式有点像代理模式又有点像策略模式。 例如:公司老板给项目经理下达任务,将任务全权交给项目经理,由项目经理根据...

  • 设计模式之——委派模式

    委派模式(Delegate Pattern)的基本作用就是负责任务的调用和分配,跟代理模式很像,可以看做是一种特殊...

  • Java设计模式-委派模式

    委派模式-delegate 委派模式特点:1、类似中介的功能(委托机制)2、持有被委托人的引用3、不关心过程,只关...

网友评论

      本文标题:设计模式-委派模式

      本文链接:https://www.haomeiwen.com/subject/oeypeltx.html