2010-04-30 53 views
3

我有要求在我的代码中使用Fund模型。它将包含一个基金名称和基金代码。为了重用,我围绕包含所使用的其他模型的包裹发现了一个现有的Fund模型。然而,这里的问题是,除了资金名称和代码之外,它还包含一笔金额。金额与我的背景无直接关系。所以,我是这样做的:近似重复使用模型组件的最佳实践?

1)使用现有的Fund模型,忽略setter/getters的资金数额。

2)把一个FundDescription接口到现有Fund模型只访问我感兴趣的信息。

3)做一个FundDescription基类,现有Fund模型现在可以延长

4)创建一个全新的独立模型,因为两者的内容略有不同

回答

2

选项1可能会混淆读取代码的人,并可能诱惑某人o完全不了解您的代码,因为误解而使用这些设置者/获取者。其他选项强迫他更好地理解你的代码。

选项2排序第二位的解决方案,但对我来说它不会在逻辑上完美的感觉。

选项3这是解决这些上市中问题的最清洁和最合理的方式,我会说,有资格接近最佳实践在这种情况下。

选项4这听起来没有必要! :-)

选项5(NEW!一个我会去:-)有FundDescriptor类型的Fund模型中的成员变量。

每当遇到这样的设计决策,我通常会尽量避免思考“什么是最有效的解决方案”或“这将是解决方案需要最少的代码”,而是想什么看起来最合乎逻辑的对于第一次读取代码的人

把“扩展”结构想象成一个“是 - 一个”关系,然后大声读出来。如果它有道理并且合乎逻辑,那就去做吧。怎么样,“一个Fund是一个FundDescriptor”声音给你?如果这听起来像“嗯..这是没有意义的”,那么我会去的选项5,否则我会去的选项3.

看一看接受的答案在

Inheritance vs. Aggregation

+0

很好的答案。谢谢。我喜欢你的选择5。 – 2010-04-30 12:26:16