親機能にアクセスすると、Javaで必要なスティッキー状況
-
23-08-2019 - |
質問
私はJavaで経済シミュレータ上で作業してバリケードに走ってきました。私が持っているの経済ののトレーダーのベクトルを所有しているクラスの。すべての反復、エコノミークラスは、それぞれがを呼び出すトレーダーは(更新)し、それを配置したい取引かを決定します。更新()関数は、所望のトランザクションが親経済のクラスのキューに追加することに戻ります。私は正確に上記のすべてを実装することができましたが、私はまだ、それぞれがはトレーダーがは、彼が現在開いているどのように多くの取引を参照できるようにする必要があります。取引は、親のの経済のクラスに格納されているので、がの経済の関数や変数へのアクセスを持っています。のトレーダーように、どのように私は、コードを設計する必要があり?
解決
、正しい方法は、トレーダークラスに経済のインスタンスを「注入」することです。あなたはそれを行うことができますいずれかのコンストラクタを持つ:
public Trader(Economy economy) {
this.economy = economy;
}
やセッターでます:
public void setEconomy(Economy economy) {
this.economy = economy;
}
適切にエコノミークラスを設計するしかし注意してください。エコノミークラスの変数へのアクセスは、クラスのメソッドに制限する必要があります。あなたが外部からそれらにアクセスしたい場合はゲッターとセッターを定義します。私の理解では、トレーダーは唯一の経済から情報を抽出する必要があります。彼らは、経済の状態を変更するメソッドを呼び出すことはできないはずです。これはあなたの設計に反映する必要があります。
また、インタフェースを定義することを検討ます:
interface IEconomy {
List<Trade> getTrades(Trader trader);
}
とエコノミークラスでそれを実装。その後、トレーダーにIEconomyを注入。これは、トレーダーが使用する経済のどのような部分はかなり明らかになります。
他のヒント
public class Trader {
private Economy parent;
...
public Trader(Economy parent, ...) {
this.parent = parent;
}
}
今トレーダーは、親の経済へのアクセスを持っている必要があります。
それともます:
public onUpdate(Economy parent) { ... }
必要に応じてます。
方法の更新ののトレーダーの中のクラスは、<1つの引数は、使用して渡すことができます。の経済のクラス、すなわちへの参照がかかる場合がありますem>のこのの。次に、経済の所望の情報を抽出するために必要なメソッドを提供することができる。