私は一緒に行く2つのクラスを持っていますが、与えられたクラスのオブジェクトはいつでも他のクラスのオブジェクトとパートナーされていてもいなくてもよく、パートナーはプログラムの過程で変更するかもしれません。リンクされたクラスを結合して切り離す良い方法はありますか?
それぞれのオブジェクトにパートナーがアクセスできるようにしたい場合、両方のオブジェクトが現在のパートナーの正確なレコードを保持していることを確認します。
私は以下のように動作するように見えますが、無限ループに巻き込まれるのを避けるために3つの関数呼び出しが必要です。ちょっと混乱しているようです。私が見ていないよりよい方法はありますか?
(ちなみに、これは、C#であるので、これらの変数のすべてが参照されている。場合には、それは明らかではなかった。)
class Horse {
private Carriage existingCarriage;
public Horse(int num) { horseNumber = num;}
public void setCarriage(Carriage newCarriage) {
if(existingCarriage != null) {
Carriage temp = existingCarriage;
existingCarriage = null;
temp.setHorse(this);
}
existingCarriage = newCarriage;
}
}
//pretty much the same thing with "Horse" and "Carriage" switched.
class Carriage {
private Horse existingHorse;
public Carriage() {}
public void setHorse(Horse newHorse) {
if(existingHorse != null) {
Horse temp = existingHorse;
existingHorse = null;
temp.setCarriage(this);
}
existingHorse = newHorse;
}
}
は、あなたが(もし 'に沿って何かを意味し、既に存在するものを設定していることを確認してくださいも参照(existingHorse、値){...}' –