我需要帮助建模以下情况:
金融工具总是有价格的。但是,某些金融工具(更确切地说是某些类型)也具有所谓的“干净”价格,这是一个取决于(除其他外)价格的属性,在这种情况下,价格也称为“脏”价格。有一个计算器服务可以计算价格(或脏价)和净价。如何最好地从概念上模拟这种情况?
我考虑了两种选择:
金融工具有价格
FinancialInstrument + price: Price
其中 Price 是具有两个派生类的超类型:DirtyPrice 和 CleanPrice。CleanPrice 取决于 DirtyPrice
CleanPrice + dirty: DirtyPrice
然后,计算器服务将计算 FinancialInstrument 的价格:
CalculatorService + compute_price(FinancialInstrument, ...): Price
FinancialInstrument 是具有两个派生的超类型:PlainFinancialInstrument(仅具有价格属性)和具有干净价格和脏价格的 CleanPriceFinancialInstrument。
FinancialInstrument + price: double PlainFinancialInstrument CleanPriceFinancialInstrument + clean_price: double
然后,Calculator 服务将有两种方法来计算 PlainSecurity 的价格或 CleanPriceSecurities 的干净和肮脏价格:
CalculatorService + compute_price(PlainFinancialInstrument, ...): double + compute_price(CleanPriceFinancialInstrument, ...): pair<double, double>
两种选择的权衡是什么?还有其他选择吗?
谢谢。