squeaker hat gesagt.:
Das Konzept der anonymen Klassen entspricht aber wieder fast dem, dass die komplette Logik im Board liegt. Die Figuren "verlassen" das Brett ja nicht, d.h. sie werden nur von der Brett Klasse benutzt. Damit liegt der komplette Code wieder im Brett was ich oben vorgeschlagen habe (und dann aufgrund deiner Argumentation verworfen habe bzw. mich der Mehrheit hier angeschlossen habe). Der Unterschied ist sematik - mehr nicht.
Warum soll die Figur nicht wissen, dass sie nach oben oder nach unten laufen kann? Wo wird die Position der Figur gespeichert?
Nein der Code liegt nicht im Brett sondern in der Klasse figur.
Die methode createBoard ist eine Faktory, und liegt natürlich nicht in der Board klasse macht da ja auch kein Sinn.
Der Unterschied ist nicht nur semantik. Du wolltest die Logik der Figuren im Brett unterbringen. Ich bringe die Logik in die Figur (wo sie auch hingehört).
Die instantion der Figuren läuft über das Faktory Pattern welche mir die Figuren herrstellt, diese überschreiben die abstracte Klasse figur und somit existiert für jede Figur eine Unterklasse nur mit dem Entscheidenden Vorteil das sich diese nicht über x Files erstrecken, sondern dies an zentraler Stelle in der Factory geschieht.
Weil zu wissen wo oben und wo unten ist, ist keine Eigenart die eine Figur hat. Das ist eine eigenart die das Board hat. Es weiss "wie herum" es gehalten wird.
Gegenfrage:
Das Board bekommt die Meldung welche Figur wohin ziehen soll. Sprich das Board kennt sein Koordinatensystem. Die Figur kennt kein Koordinatensystem, wozu auch. Sie kennt einzig und allein ihre eigene Position. Das Board ist also dafür zuständig wenn ein Move-Request ankommt die Figur zu fragen ob sie diagonal laufen kann. Die Figur sagt ja (siehe anonyme Klassen) . Dann kann das Board entscheiden ob jemand im Weg ist ( denn die Figuren kennen nur sich selber und nicht die anderen Figuren). Sprich das Board muss sowieso Dinge beim Move überprüfen.
Sprich das Board prüft die Dinge, aber fragt dabei jede Figur ob sie überhaupt technisch dafür in der Lage wäre.