委派设计模式

本文探讨了委派模式在程序设计中的应用,通过实例展示如何将任务委派给不同对象执行,实现任务分配与执行分离,同时与代理模式、静态代理进行区分。该模式强调行为分配,适用于处理未知任务并促进程序解耦,但可能因任务复杂性增加管理复杂性。

定义

负责任务的调度和分配,将任务的分配和执行分离开来,可看作使特殊情况下的静态代理的全权代理,不属于gof23

适用场景

  1. 委派模式本身不知如何处理一个任务,把请求交个其他对象来处理

  2. 实现程序的解耦

实例

// 执行者
public class Boss {
    public void commond(String task,Leader leader) {
        leader.doing(task);
    }
}

// 分发的目标者
public interface Employee {
    void doing(String task);
}
public class EmployeeA implements Employee {
    private  String goodAt = "海报";
    @Override
    public void doing(String task) {
        System.out.println("员工A,擅长" + task);
    }
}
public class EmployeeB implements Employee {
    private  String goodAt = "编程";
    @Override
    public void doing(String task) {
        System.out.println("员工A,擅长" + task);
    }
}

// 策略算法中转分配,不做其他处理,非全能类
public class Leader implements Employee {
    private Map<String, Employee> employeeMap = new HashMap<String, Employee>();

    public Leader() {
        employeeMap.put("海报", new EmployeeA());
        employeeMap.put("爬虫", new EmployeeB());
    }

    @Override
    public void doing(String task) {
        if (!employeeMap.containsKey(task)) {
            System.out.println("无匹配任务");
            return;
        }
        employeeMap.get(task).doing(task);
    }
}

源码应用

  1. classloader jvm

  2. method 反射

  3. dispatcher servlet

与其他模式区别

  1. 代理模式
    1. 代理为结构型,增强,注重过程
    2. 委派为行为型,分配,注重结构
    3. 是一种特殊的静态代理,相当于全权代理

优点

  1. 能够将一个大型的任务进行细化,统一进行管理这些子任务的完成情况实现任务的跟进,加快任务的执行效率

缺点

  1. 需要更具任务的复杂程度进行不同的更改,在任务比较多的情况下,可能需要多重委派,容易造成混乱
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值