【问题标题】:Best practice for near reuse of model components?接近重用模型组件的最佳实践?
【发布时间】:2010-04-30 11:31:53
【问题描述】:

我需要在我的代码中使用 Fund 模型。它将包含基金名称和基金代码。为了重用,我浏览了包含使用的其他模型的包,发现了一个现有的Fund 模型。但是这里的问题是,除了基金名称和代码之外,它还包含一个金额。金额与我的上下文没有直接关系。那么,我是否:

1) 按原样使用现有的Fund 模型,忽略资金金额的设置器/获取器。

2) 在现有的Fund 模型上添加一个FundDescription 接口,以便仅访问我感兴趣的信息。

3) 创建一个FundDescription 基类,现有的Fund 模型现在可以从中扩展

4) 创建一个全新的独立模型,因为两者在上下文上略有不同

【问题讨论】:

    标签: language-agnostic oop


    【解决方案1】:

    选项 1 可能会使阅读代码的人感到困惑,并且可能会诱使不完全理解您的代码的人由于某些误解而使用这些 setter/getter。其他选项会迫使他更好地理解您的代码。

    选项 2 有点像第二名的解决方案,但对我来说,这在逻辑上并不完全合理。

    选项 3 在列出的方法中,这是解决问题的最简洁、最合乎逻辑的方法,我认为在这种情况下,这符合最佳实践。

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

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

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

    将“extends”结构想象成“is-a”关系,然后大声读出。如果它有意义且合乎逻辑,那就去做吧。 “Fund FundDescriptor”对你来说听起来如何?如果听起来像“嗯..这没有意义”,那么我会选择选项 5,否则我会选择选项 3。

    查看接受的答案

    Inheritance vs. Aggregation

    【讨论】:

    • 不错的答案。谢谢。我喜欢你的选项 5。
    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多