
将代码重构为设计模式的经典案例,并提供超详细的Java源码。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
/* * 原始需求背景: * 网宿CDN需要按月对客户提供的服务进行费用收取,根据流量的使用量以及所选取的服务类型,采用不同的收费标准。具体的收费规则如下: * 对于web应用,收取1000元/M;对于流媒体应用,收取1000元/M*0.7;对于下载应用,收取1000元/M*0.5。此外,在每月月末时,系统需要生成详细的费用报表,该报表需罗列每个用户的每个频道的具体费用信息,并汇总客户的总费用。同时,还需计算并打印该客户的重要性指数,其计算公式为:重要性指数=网页流/100+下载流量/600; * * 需求变更场景: * 系统已经成功上线运行,目前运维部门希望对系统进行进一步的调整和优化。首要需求是能够将数据输出为XML格式,以便供其他系统进行读取和处理。然而,由于这段代码无法在XML输出代码中复用report()函数中的任何功能,因此唯一的解决方案就是重新编写一个xmlReport()函数,并大量重复report()函数中的操作逻辑。虽然当前此修改并不复杂,直接复制report()函数并进行修改即可满足需求。 * 不久之后,成本中心又提出了修改计费规则的要求。因此,我们必须同时对xmlReport()和report()函数进行调整并确保两者之间的协调一致性。更重要的是,当后续需要进行更多修改时,简单的复制-粘贴操作可能会带来潜在的风险和问题。 * 随后,客服部门提出希望调整服务类型以及用户重要性指数计算规则的要求, 但尚未确定具体的改动方案, 这些方案都将影响最终的计费规则。程序必须再次同时修改xmlReport()和report()函数以适应这些变化。随着各种规则的不断增加和变得更加复杂, 适宜的修改点也变得越来越难以找到, 从而导致不犯错误的概率显著降低。 * 现在, 我们将运用所学面向对象的设计原则和方法论来对系统进行全面的改写与重构。 */
全部评论 (0)


