我需要在代码中使用Fund
模型。它将包含一个基金名称和基金代码。为了重用,我仔细研究了包含其他模型的软件包,并找到了一个现有的Fund
模型。但是,这里的问题是,除了基金名称和代码之外,它还包含金额。在我的上下文中,金额并不直接相关。我也是:
1)照原样使用现有的Fund
模型,忽略设置者/获取者的资金数额。
2)在现有的FundDescription
模型上放置一个Fund
界面,以仅访问我感兴趣的信息。
3)创建一个FundDescription
基类,现有的Fund
模型现在可以从该基类扩展
4)创建一个全新的单独模型,因为两者在上下文上略有不同
最佳答案
选项1可能会使阅读代码的人感到困惑,并可能由于某些误解而诱使那些不完全理解您的代码的人使用这些设置器/获取器。其他选择迫使他更好地理解您的代码。
选项2是第二种解决方案,但对我而言,从逻辑上讲并没有十全十美的意义。
选项3:这是列出的方法中最干净,最合乎逻辑的解决方法,在这种情况下,我认为这与最佳实践非常接近。
选项4听起来没必要! :-)
选项5(新!我要去的那个:-)在FundDescriptor
模型中有一个Fund
类型的成员变量。
每当面对此类设计决策时,我通常都尽量避免考虑“什么是最有效的解决方案”或“什么是需要最少代码的解决方案”,而是考虑对阅读者而言最合理的选择第一次输入代码。
将“扩展”构造视为“是”关系,然后大声朗读。如果有意义并且合乎逻辑,那就去做吧。您如何看待“ Fund
是FundDescriptor
”?如果听起来像“嗯..那没有道理”,那么我会选择选项5,否则我会选择选项3。
看看以下接受的答案
Inheritance vs. Aggregation