Поскольку классу Trader требуется доступ к методам класса Economy, правильный способ - «внедрить» экземпляр Economy в класс Trader. Вы можете сделать это либо с помощью конструктора:
public Trader(Economy economy) {
this.economy = economy;
}
или с установщиком:
public void setEconomy(Economy economy) {
this.economy = economy;
}
Будьте осторожны, чтобы правильно спроектировать Эконом класс. Доступ к переменным класса «Эконом» должен быть ограничен только методами класса. Определите методы получения и установки, если вы хотите получить к ним внешний доступ. Насколько я понимаю, трейдеры должны извлекать информацию только из экономики. Они не должны иметь возможность вызывать методы, которые изменяют состояние экономики. Это должно отразиться на вашем дизайне.
Вы можете также рассмотреть определение интерфейса:
interface IEconomy {
List<Trade> getTrades(Trader trader);
}
и реализуем его по Эконом классу. Затем введите трейдеру экономику. Это делает совершенно очевидным, какие части экономики должны использовать трейдеры.