LINUX.ORG.RU

Проектирование с++

 , ,


0

1

Привет! Есть объект Game, внутри которого есть массив объектов Company. Каждому объекту Company нужно производить решение сколько сырья переделывать в продукцию на основании потребности рынка и производственных мощностях соседних компаний. Эти данные находятся в объекте Game, в который включён наш объект, соответсвенно, я не понимаю как объекту до этих данных дотянутся. Передавать указатели на весь массив и рынок? Кажется что высчитывать необходимые данные в объекте Game и передавать их параметрами не есть правильно, поскольку необходимые данные могут измениться в будующем.

Передавать указатели на весь массив и рынок?

А как по другому? Рынок отдельным объектом, пусть по id продукта отдаёт потребность. У Company метод по тому же id продукта отдавать производственную мощность.

vvn_black ★★★★★ ()
struct PotrebnostiRunkaProvider {
  virtual ~PotrebnostiRunkaProvider() {}
  virtual RunokData get_runok_data() = 0;
};

struct MozhnostSosendichCompaniyProvider() {}
  virtual ~MozhnostSosendichCompaniyProvider() {}
  virtual std::list<MoznhostCompiniy> get_mozhnost() = 0;
}

class Game: public PotrebnostiRunkaProvider, public MozhnostSosendichCompaniyProvider {
...
};

class Company {
  void poschitat_skolko_surya_peredelyvat(PotrebnostiRunkaProvider &a, MozhnostSosendichCompaniyProvider &b) {
  ...
}
};

int main() {
  Game game;
  game.get_company("roga_i_koputa").poschitat_skolko_surya_peredelyvat(game, game);

}
anonymous ()

У меня стойкое ощущение, что класс Game у тебя следует антипаттерну God object. Рекомендую проверить этот момент и исправить при обнаружении. Глядишь, многие вопросы отпадут сами собой

XMs ★★★★★ ()