Szenario: ein Spiel mit einem Brett und mehrere Fliesen darauf. Klassen: Board, Tile, Spieler und natürlich Spiel. Jedes Mal, wenn der Spieler eine Fliese drückt, seine Punktzahl von 1. Vorstand erhöht wird innerhalb von Spiel, und eine Reihe von Tile innerhalb von Vorstand instanziiert instanziiert. Meine erste Option, diese Punktzahl leicht zu erhöhen, war eine öffentliche statische Klasse mit einem öffentlichen statischen Feld (Score) zu machen. Natürlich ist es eher amateurhaft. Und schien den gesamten Fluss der App zu durchbrechen.C# Delegierte und Veranstaltungen Design/Architektur
Nach einigem Nachdenken änderte ich alles, um Ereignisse zu verwenden; Tile löst ein Ereignis beim Klicken auf; Board behandelt dieses Ereignis und löst ein weiteres Ereignis in der Hauptklasse Game Klasse aus. Spieler wird innerhalb von Spiel instanziiert; Wenn Spiel behandelt das Ereignis erhalten von Board, es tut ein PlayerOne (Instanz Player) .Score + = 1;
Soll ich einfach weitermachen und diesen Fluss verwenden? Haben Sie andere Architektur-/Design-Ideen, die besser funktionieren würden? Warum würden deine Ideen besser funktionieren? Ich habe vorher keine speziell angefertigten Events verwendet und ich denke, dass das ganze Event, das eine weitere, gleichgültige Idee aufwirft, ein bisschen falsch ist. Aus der Ferne sieht es jedoch nach einem guten Fluss aus. Und es macht die Arbeit richtig.
In der Tat, sollte etwas Code gepostet haben; Trotzdem hat dein Code geholfen: es macht viel mehr Sinn, die Animation des Plättchens vom Spielfeld aus aufzurufen, da das Brett die Plättchen "verwaltet". Vorher würde ich zuerst die Animation über die Klasse der Kachel starten und dann würde ich das TilePress-Ereignis zum Board bringen. –
Hier finden Sie einige gute Antworten; besonders diejenigen über das Beobachtermuster (jetzt weiß ich, was ich mein Experiment nennen soll). Leider kann ich nur eins wählen. Ich denke, ich werde deine auswählen, weil der Code auch geholfen hat. –