《模式——工程化实现及扩展》(设计模式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、 便于从“人员类型”和“管理内容”两方面扩展