Ich habe die folgende Methode:Gesetz des Demeter - mit nur einem Punkt, könnte ich diese Logik verbessern?
private boolean reserveSeat(int selectedRow, int selectedSeat) {
if (show.getRows().get(selectedRow).getSeats().get(selectedSeat).getReservationStatus()) {
return false;
} else {
show.getRows().get(selectedRow).getSeats().get(selectedSeat).reserve();
setRowNumber(selectedRow);
setSeatNumber(selectedSeat);
return true;
}
}
, die in einer Reservation Klasse befindet. Diese Klasse hat ein Show-Objekt (show), Eine Show hat Rows (ein anderes Objekt), Rows have Seats (ein anderes Objekt).
Meine Frage ist, könnte diese Methode verbessert werden? Ich habe über LoD gelesen und bin besorgt, dass mein Punkt ein schlechtes Design signalisiert, obwohl ich denke, dass es logisch ist. Es ist das Sitzobjekt, das weiß, ob es reserviert ist oder nicht. Aber geht es von Show zu Seat mit Fremden? oder ist es ok, weil jedes Objekt das nächste Objekt enthält?
Entschuldigung, wenn meine Suche nicht klar ist. Was scheint mit mir zu passieren (wahrscheinlich, weil ich Autodidakt bin) ist ich Design-Sachen, die funktioniert dann lese ich einige OOP-Design-Prinzipien und denke Mist, es funktioniert, aber es ist nicht gutes Design!
Jeder Ratschlag geschätzt.
Sie könnten eine 'getRow' Methode erstellen, die' getRows tut(). Get (row) 'in der Show-Klasse. und ähnlich eine 'getSeat (seat)' Methode in Ihrer Zeilenklasse. Sie könnten sogar eine Hilfsmethode in Ihrer Show-Klasse hinzufügen: 'show.getSeat (row, seat)'. – assylias
@assylias danke für die Antwort. getRows befindet sich derzeit in meiner Show-Klasse (und getSeat befindet sich derzeit in meiner Row-Klasse), aber ich denke, Sie sollten das getRows(). get (row) -Bit verwenden, damit dies in meiner Reservierungsklasse nicht gemacht wird Sinn. Eine Hilfsmethode wäre eine gute Idee –