《模式——工程化实现及扩展》(设计模式C# 版)《访问者模式 Visitor》——“自我检验"
下面我们把本章正文部分的HR系统示例进一步复杂化:
1、 系统管理的人员类型包括三大类4小类:
a. 员工(Employee):包括普通员工(General Employee),经理(Manager)
b. 临时员工(Temporary)
c. 外聘专家(Expert)
2、 管理的内容包括三大类8小类,而且预期还会不断增加
a. 薪金:包括底薪、司龄工资(与在公司工作年限相关)、不定期的岗位加薪和外聘专家的聘金
b. 保险和公积金:养老保险和住房公积金
c. 假期:年休假、岗位增休假
3、 现有功能需求
a. 薪金:
i. 司龄工资:每年增加50元
ii. 不定期的岗位加薪:计划给普通员工和经理分别加薪15%和10%
b. 保险和公积金:为了简化示例,养老保险和住房公积金分别按最后应发收入合计的5%和15%扣除
c. 假期:
i. 年休假:所有员工(普通员工、经理)按照司龄从每年5天起,每满5年年度增加5天逐级递增
ii. 岗位增休假:计划在现有休假基础上,普通员工每年增加3天,经理每年增加5天
请采用本章介绍的任意一种访问者模式实现方式(“经典方式”、“Dynamic方式”和“LINQ + 委托方式”),完成上述功能,并通过单元测试验证。
要求:
1、 依赖关系尽可能简洁
2、 实现方式尽可能简洁、实用
3、 便于从“人员类型”和“管理内容”两方面扩展
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述