Допустимо ли для класса использование его свойств ТОЛЬКО во внешней среде?

Иногда мы сталкиваемся с проблемой, когда класс не нужно использовать свои собственные свойства. См подход 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
}
};

Чтобы избежать этого, мы можем использовать подход В:

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 знать друг о друге, что не хорошо.

Итак, какой подход лучше?

  • Слабая связь, но некоторые классы не будут использовать свои собственные свойства, или
  • В: Классы будут использовать свои свойства, но структура жесткой связи?

Когда использовать каждый?

2

Решение

лучше в том больше растяжимый.

Шарики могут приобретать другие свойства, не относящиеся к текущему вычислению, такие как элементы для вычисления момента инерции (например, для полой сферы).

Так что да, для класса допустимо, чтобы его свойства использовались только внешней средой, поскольку это может быть не всегда.

Тем не менее, если x а также y расскажу вам кое-что о расположении мяча, тогда это скорее связано с тем, что класс рассказывает вам о сборе установленных экземпляров мяча, а не является частью самого шарика.

3

Другие решения

Других решений пока нет …