代码之家  ›  专栏  ›  技术社区  ›  Corwin

对象的行为回答什么问题?

  •  3
  • Corwin  · 技术社区  · 16 年前

    读了一本书,我发现了以下陈述:

    (目标)行为回答以下两个问题之一: 这个物体(对我)做什么? 我能对这个物体做什么? 在橙色的情况下,它不会起到很大作用,但我们可以对它做一些事情。一个行为是它可以被吃掉。

    在我对目标行为的理解中,上述陈述对于第一个问题是正确的,对于第二个问题是错误的。但是,我经常看到类的方法如下 橙色::() 这让我无法确定自己的设计技巧。所以我想问一个设计错误 橘子 行为 ?(例如,桔子和吃的就用在这里)

    3 回复  |  直到 16 年前
        1
  •  3
  •   Tomislav Nakic-Alfirevic    16 年前

    我认为你对事物和它们的责任的思考方式没有什么错。 Orange::eat() 如果橘子有嘴的话就有意义了。否则,它是一个 Animal 谁在吃东西。

    问题是,SVO(主语-动词-宾语)句子并不总是描述某件事情的最佳方式,但是OOP似乎严重偏向于这种语句,因此我们经常在代码中遇到奇怪、不自然和抽象的句子结构。

        2
  •  1
  •   Alex F    16 年前

    让我们以经典员工为例。”“我能为这个物体做什么”是指:

    void SetSalary(int value);
    

    吃橘子不是橘子的方法,而是人的方法:

    void Eat(Orange& orange);
    
        3
  •  1
  •   Mark Dickinson    16 年前

    例如,一个橘子可以做一些事情,使新的橘子树变黄。你说得对,桔子不能吃任何东西,所以吃桔子的东西都有吃的方法。

    有了这个明显的例子,答案很简单,但在现实场景中会变得更加复杂,您可以看看Robert Martin在C中的敏捷原则、模式和实践。浏览一些场景,了解谁可以做什么等等。

    推荐文章