Вы также можете создать класс Town
. Итак, в государстве есть поле под названием capital типа Town. У государства также есть «Набор» городов, чтобы все города могли искать государство. Город имеет полевое состояние типа State. Что-то вроде ниже.
государственный класс:
public class State {
private Town capital;
private Set<Town> towns;
public State() {
this.towns = new HashSet();
}
public State(Town capital) {
this.capital = captial;
this.towns = newHashSet();
this.towns.add(capital)
}
public void setCapital(Town capital) {
this.captial = capital;
}
public Town getCapital() {
return this.capital;
}
public void addTown(Town town) {
this.towns.add(town)
}
public Set getTowns() {
return this.towns;
}
}
класс Город:
public class Town {
private State state;
public Town() {}
public Town(State state) {
this.state = state;
this.state.addTown(this);
}
public void setState(State state) {
this.state = state;
this.state.addTown(this);
}
public State getState() {
return this.state;
}
}
Тогда, если у вас есть Town
объект под названием myTown
, чтобы получить капитал государства города в использовании:
myTown.getState().getCapital();
Если у вас есть State
объект называется myState
, вы получите все города вы используете:
myState.getTowns();
Является ли интерфейс для Town.getState() правильным? – Huperniketes
@ Huperniketes Nope - не было. Скопируйте и вставьте FAIL. Я обновил его сейчас. Возвращаемый тип Town.getState() должен быть State. – Owen
Мне это нравится! Это, пожалуй, самый глубокий ответ. Некоторые из других упоминают об инъекции Зависимости, является ли это решение формой DI? В конечном итоге я хочу привязать все объекты в БД. Я пытаюсь начать с нуля правильным способом - если вы понимаете, что я имею в виду. – AndyM