java装饰模式资料

java装饰模式资料

ID:39656144

大小:708.50 KB

页数:55页

时间:2019-07-08

java装饰模式资料_第1页
java装饰模式资料_第2页
java装饰模式资料_第3页
java装饰模式资料_第4页
java装饰模式资料_第5页
资源描述:

《java装饰模式资料》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Java装饰模式(Decorator)1 场景问题1.1 复杂的奖金计算       考虑这样一个实际应用:就是如何实现灵活的奖金计算。       奖金计算是相对复杂的功能,尤其是对于业务部门的奖金计算方式,是非常复杂的,除了业务功能复杂外,另外一个麻烦之处是计算方式还经常需要变动,因为业务部门经常通过调整奖金的计算方式来激励士气。       先从业务上看看现有的奖金计算方式的复杂性:·首先是奖金分类:对于个人,大致有个人当月业务奖金、个人累计奖金、个人业务增长奖金、及时回款奖金、限时成交加码奖金等等;·对于业务主管或者是业

2、务经理,除了个人奖金外,还有:团队累计奖金、团队业务增长奖金、团队盈利奖金等等。·其次是计算奖金的金额,又有这么几个基数:销售额、销售毛利、实际回款、业务成本、奖金基数等等;·另外一个就是计算的公式,针对不同的人、不同的奖金类别、不同的计算奖金的金额,计算的公式是不同的,就算是同一个公式,里面计算的比例参数也有可能是不同的。 1.2 简化后的奖金计算体系        看了上面奖金计算的问题,所幸我们只是来学习设计模式,并不是真的要去实现整个奖金计算体系的业务,因此也没有必要把所有的计算业务都罗列在这里,为了后面演示的需要,简化

3、一下,演示用的奖金计算体系如下:·每个人当月业务奖金=当月销售额X 3%·每个人累计奖金=总的回款额X 0.1%·团队奖金=团队总销售额X1% 1.3 不用模式的解决方案       一个人的奖金分成很多个部分,要实现奖金计算,主要就是要按照各个奖金计算的规则,把这个人可以获取的每部分奖金计算出来,然后计算一个总和,这就是这个人可以得到的奖金。(1)为了演示,先准备点测试数据,在内存中模拟数据库,示例代码如下:01/**02 *在内存中模拟数据库,准备点测试数据,好计算奖金03 */04publicclassTempDB{05 

4、   privateTempDB(){06}07    /**08     *记录每个人的月度销售额,只用了人员,月份没有用09     */10    publicstaticMapmapMonthSaleMoney= 11newHashMap();12    static{13        //填充测试数据14        mapMonthSaleMoney.put("张三",10000.0);15        mapMonthSaleMoney.put("李

5、四",20000.0);16        mapMonthSaleMoney.put("王五",30000.0);17    }18} (2)按照奖金计算的规则,实现奖金计算,示例代码如下: 01/**02 *计算奖金的对象03 */04publicclassPrize{05    /**06     *计算某人在某段时间内的奖金,有些参数在演示中并不会使用,07     *但是在实际业务实现上是会用的,为了表示这是个具体的业务方法,08     *因此这些参数被保留了09     *@paramuser被计算奖金的人员10 

6、    *@parambegin计算奖金的开始时间11     *@paramend计算奖金的结束时间12     *@return某人在某段时间内的奖金13     */14    public doublecalcPrize(Stringuser,Datebegin,Dateend){15        doubleprize=0.0; 16        //计算当月业务奖金,所有人都会计算17        prize=this.monthPrize(user,begin,end);18        //计算累计奖金1

7、9        prize+=this.sumPrize(user,begin,end);20          21        //需要判断该人员是普通人员还是业务经理,团队奖金只有业务经理才有22        if(this.isManager(user)){23            prize+=this.groupPrize(user,begin,end);24        }25        returnprize;26    }27  28    /**29     *计算某人的当月业务奖金,参数重复,

8、就不再注释了30     */31    privatedoublemonthPrize(Stringuser,Datebegin,Dateend){32        //计算当月业务奖金,按照人员去获取当月的业务额,然后再乘以3%33        doub

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。