2

有时我们会遇到一个类不需要使用自己的属性的问题。见方法A:

struct Ball {
    double mass = 1;
    double x = 0;
    double y = 0;
};

struct World {
    std::vector<Ball*> balls;
    void run_physics() {
        // here we run the physics
        // we can access every ball and their x, y properties
    }
};

为了避免这种情况,我们可以使用方法B

struct World;

struct Ball {
    World* world = NULL;
    double mass = 1;
    double x = 0;
    double y = 0;
    void run_physics() {
        if (this->world != NULL) {
            // here we run the physics again
            // we can access every other ball properties through this->world->balls vector.
        }
    }
};

struct World {
    std::vector<Ball*> balls;
};

但是方法B是一种紧耦合结构,这意味着两者都Ball互相World了解,这是不好的。

那么,哪种方法更好呢?

  • A : 松耦合,但有些类不会使用自己的属性,或者
  • B : 类会使用它们的属性,但是紧耦合结构?

什么时候使用每一个?

4

1 回答 1

3

A更好,因为它更具可扩展性

球可能具有与当前计算无关的其他属性,例如用于计算惯性矩的构件(例如,如果是空心球)。

所以是的,一个类的属性只被外部环境使用是可以接受的,因为这可能不会永远如此。

也就是说,如果x告诉y你一些关于球的位置的信息,那么这些更多的是与一个告诉你有关已安装球实例的集合的类有关,而不是作为球本身的一部分。

于 2018-02-28T13:04:17.080 回答