委派模式与模板模式(1)

简介: 委派模式与模板模式(1)

一、委派模式定义


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


二、委派模式真实案例


从类图中我们可以看到, 委派模式有三个参与角色:


抽象任务角色( Task ) : 定义一个抽象接口, 它有若干实现类。


委派者角色( Delegate ) : 负责在各个具体角色实例之间做出决策并判断并调用具体实现的方法。


具体任务角色( Concrete ) 真正执行任务的角色。


微信图片_20220129152752.png


现实生活中也室有委派的场景发生,例如:老板( Boss ) 给项目经理( Leader ) 下达任务,项目经


理会根据实际情况给每个员工派发工作任务, 待员工把工作任务完成之后, 再由项目经理汇报工作进度


和结果给老板。


image.png


我们用代码来模拟下这个业务场景 ,

创建 IEmployee员工接口 :


public interface IEmployee {
    void doing(String task);
}


创建员工 EmployeeA 类:


public class EmployeeA implements IEmployee {
    protected String goodAt = "编程";
    public void doing(String task) {
        System.out.println("我是员工A,我擅长" + goodAt + ",现在开始做" + task + "工作");
    }
}


创建员工 Employees 类:


public class EmployeeB implements IEmployee {
    protected String goodAt = "平面设计";
    public void doing(String task) {
        System.out.println("我是员工B,我擅长" + goodAt + ",现在开始做" +task + "工作");
    }
}


创建项目经理 Leader 类:


public class Leader implements IEmployee {
    private Map<String, IEmployee> employee = new HashMap<String, IEmployee>();
    public Leader() {
        employee.put("爬虫", new EmployeeA());
        employee.put("海报图", new EmployeeB());
    }
    public void doing(String task) {
        if (!employee.containsKey(task)) {
            System.out.println("这个任务" + task + "超出我的能力范围");
            return;
        }
        employee.get(task).doing(task);
    }
}


创建 Boss 类下达命令:


public class Boss {
    public void command(String task,Leader leader){
        leader.doing(task);
    }
}


测试代码:


public class Test {
    public static void main(String[] args) {
        new Boss().command("海报图",new Leader());
        new Boss().command("爬虫",new Leader());
        new Boss().command("卖手机",new Leader());
    }
}


运行结果:


我是员工B,我擅长平面设计,现在开始做海报图工作
我是员工A,我擅长编程,现在开始做爬虫工作
这个任务卖手机超出我的能力范围


通过上面的代码 , 生动地还原了项目经理分配工作的业务场景 ,也是委派模式的生动体现。下面来

目录
相关文章
|
存储 弹性计算 负载均衡
阿里云ECS学习篇之知识汇总
弹性计算服务(Elastic Computer Service,简称ECS)
586 1
阿里云ECS学习篇之知识汇总
|
2天前
|
云安全 数据采集 人工智能
古茗联名引爆全网,阿里云三层防护助力对抗黑产
阿里云三层校验+风险识别,为古茗每一杯奶茶保驾护航!
古茗联名引爆全网,阿里云三层防护助力对抗黑产
|
6天前
|
人工智能 中间件 API
AutoGen for .NET - 架构学习指南
《AutoGen for .NET 架构学习指南》系统解析微软多智能体框架,涵盖新旧双架构、核心设计、技术栈与实战路径,助你从入门到精通,构建分布式AI协同系统。
302 142
|
2天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
367 0
|
3天前
|
传感器 人工智能 算法
数字孪生智慧水务系统,三维立体平台,沃思智能
智慧水务系统融合物联网、数字孪生与AI技术,实现供水全流程智能监测、预测性维护与动态优化。通过实时数据采集与三维建模,提升漏损控制、节能降耗与应急响应能力,推动水务管理从经验驱动迈向数据驱动,助力城市水资源精细化、可持续化管理。
264 142
|
2天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
本文介绍RAG(检索增强生成)技术,结合Spring AI与本地及云知识库实现学术分析AI应用,利用阿里云Qwen-Plus模型提升回答准确性与可信度。
194 90
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
|
17天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!