...
Det skal altså være nok å kalle én set-metode for å sette opp begge koblingene (evt. koble begge av med null som argument). Hver set-metode må derfor sjekke koblingen den andre veien, også. Dette kan være litt fiklete å gjøre rett, så her er koden for det to set-metodene:
Code Block |
---|
// i Rolle1Klasse
public void setRolle2(Rolle2Klasse rolle2) {
// sjekk om koblingen er riktig allerede
if (this.rolle2 == rolle2) {
return;
}
// husk den gamle og sett den nye
Rolle2Klasse oldRolle2 = this.rolle2;
this.rolle2 = oldRolle2rolle2;
// hvis det var en kobling fra før, koble den andre fra
if (oldRolle2 != null) {
oldRolle2.setRolle1(null);
}
// hvis dette er en ny kobling, koble den andre til
if (this.rolle2 != null) {
this.rolle2.setRolle1(this);
}
} |
| Code Block |
---|
// i Rolle2Klasse
public void setRolle1(Rolle1Klasse rolle1) {
// sjekk om koblingen er riktig allerede
if (this.rolle1 == rolle1) {
return;
}
// husk den gamle og sett den nye
Rolle1Klasse oldRolle1 = this.rolle1;
this.rolle1 = oldRolle1rolle1;
// hvis det var en kobling fra før, koble den andre fra
if (oldRolle1 != null) {
oldRolle1.setRolle2(null);
}
// hvis dette er en ny kobling, koble den andre til
if (this.rolle1 != null) {
this.rolle1.setRolle2(this);
}
} |
|
...