薪水支付案例研究
薪水支付案例研究
敏捷软件开发:原则、模式与实践
书上说在继续学习之前,自己来设计一下这个薪水支付系统是有好处的,那就先随便想一想。
基本介绍:
薪水支付系统由一个公司雇员数据库以及和雇员相关的数据(比如:工作时间卡)组成。该系统必须微每个雇员支付薪水。系统必须按照规定的方法准时地给雇员支付正确数目的薪水。同时,必须从雇员的薪水中减去各种扣款。
看起来数据库已经做好了,我只需要根据数据库的信息支付薪水就行。
有些雇员是钟点工。会按照他们雇员记录中每小时报酬字段的值对他们进行支付。他们每天会提交工作时间卡,其中记录了日期以及工作小时数。如果他们每天工作超过8小时,那么超过的部分会按照正常报酬的1.5倍进行支付。每周五对他们进行支付。
有些雇员完全以月薪进行支付。每个月的最后一个工作日对他们进行支付。在他们的雇员记录中有一个月薪字段。
同时,对于一些带薪雇员,会根据他们的销售情况,支付给他们一定数量的酬金。他们会提交销售凭条,其中记录了销售的日期和数量。在他们的雇员记录中有一个酬金字段。每隔一周的周五对他们进行支付。
哦就是有三种雇员,他们的支付方式是不一样的。
雇员可以选择支付方式。可以选择把支付支票邮寄到他们指定的邮寄地址;也可以把支票保存到出纳人员那里随时支取;或者要求将薪水直接存入他们指定的银行账户。
这只影响数据库吧?数据库里多一条字段。
一些雇员会加入协会。在他们的雇员记录中有一个每周应付款项字段。这些应付款必须要从他们的新税种扣除。协会有时也会针对单个协会成员征收服务费用。协会每周会提交这些服务费用,服务费用必须要从相应雇员的下个月的薪水总额中扣除。
薪水支付应用程序每个工作日运行一次,并在当天为相应的雇员进行支付。系统会被告知雇员的支付日期,这样它会计算从雇员上次支付日期到规定的本次支付日期间应支付的数额。
我会怎么设计呢?
我应该先用策略模式实现不同的支付函数,可以输入金额和雇员,然后按照指定方式打出去。然后实现不同的薪水计算函数。
然后创建一个工厂类,根据雇员的类型,决定如何选取策略。
然后实现一个扣钱的函数。
遍历一遍所有人。