我有一个(php)程序,必须每年进行更改。这个计划每年都要计算税收,而且有时要求也会发生变化。首先,用户填写他们的收入、费用等,然后单击下载按钮,为他创建一个xml文件。
下载类使用Calculator类来计算全部税收结果。唯恐我有五种计算器。(每个税务报告部分有一个计算器) CalcTaxBase,CalcTaxFree,CalcEtc.
在第一年中,我创建了类CalcTaxBase13 13 ans等等。taxBase计算器有r1()、r2()和r3()方法。
明年,taxBase中没有任何变化,所以我从以前的一年类中创建了<>CalcTaxBase14 14扩展。(有一个年份属性,我使用它来加载一些参数,当然,每年都会改变)
然后在2015年,我不得不重载r3()并将r4()添加到CalcTaxBase15 15
我创建这个层次结构是因为通过这种方式,我可以重用前几年的非更改方法,并且只实现更改或新方法,但我对此有更多的问题。
希望这对你有意义。有人能给我推荐一些更好的设计吗?
发布于 2023-02-06 16:21:50
这听起来是一种更好的方法,可以实现一个具有有效日期限制、节适用性和排序键的业务规则列表。然后,对于每一节,您将执行适用的规则,其有效范围涵盖计算税收的日期。
节类将随着时间的推移而演变,以存储新引入的数据,但是您只需要一个当前版本,因为它能够代表规则在前几年所需的一切。
我不确定我是否理解下载类的用途--对我来说,它读起来好像做得太多了,您可能希望将运行计算器与创建XML文件分开,
https://softwareengineering.stackexchange.com/questions/443817
复制相似问题