我需要进行一个复杂的计算。就我而言,创建一个计算器类(使用策略模式抽象)似乎是最自然的。
为了执行计算,该类需要接受大约 20 个输入,其中一些是可选的,其中一些可能在将来发生变化等。计算()调用方法时,需要输出大约20个不同的变量。
有多种方法可以实现这一目标。
- 输入作为参数传递给计算方法
- 通过计算器的属性传入的输入
- 输入包装到自己的类中,然后传递给Calculate() 方法。
- 由Calculate()返回的输出,包装在一个类中
- 输出填充到传递给Calculate()方法的参数中
- 调用Calculate()后,从计算器的公共属性检索输出
所有这些方法都有优点和缺点。
你会怎么做?
更新:
感谢您的反馈。
该计算器的目的是生成报价。输入包括客户地址、利率、目标利润、附加费用、产品 ID 等。输出包括报价、实际利润、更多费用等。
我已经创建了 ICalculateInput 和 ICalculateOutput 接口及其具体类,并且系统现在运行得很好。 Calculator 类还继承自 ICalculator 接口(因为所涉及的计算根据产品来源的公司而有很大差异)。
我会推荐
- 输入包装到自己的类中,然后传递给Calculate() 方法。
- 由Calculate()返回的输出,包装在一个类中
仅当您进行多步计算,或者基本计算步骤可能多次完成并且重新填充输入很困难时,在计算器中存储状态才有意义。否则,这是一个糟糕的抽象,当您对其进行多线程或在代码的不同部分重用同一对象时,它将会失败。
拥有大量参数很难维护和阅读,并且如果需要更改的话也不够灵活
改变参数来生成输出是一个坏主意。从调用者方面来看,他“拥有”的类已通过将其传递到函数中而被更改,这一点并不明显。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)