Der Grund dafür, dass das Aufrufen von TileHandler in einem statischen Kontext nicht das bestmögliche Design ist, besteht darin, dass Komponenten Ihres Designs gekoppelt werden, die andernfalls entkoppelt werden könnten.
Wenn Sie sich in Zukunft für mehr als einen TileHandler entscheiden, müssen Sie viel Arbeit leisten, um diese Änderung zu berücksichtigen.
Wenn Sie TileHandler entfernen möchten, müssen Sie viel Arbeit leisten, um diese Änderung zu berücksichtigen.
Angenommen, Sie erstellen in Zukunft eine andere Ebene / Zone, die Kacheln anders behandelt als Ihr aktueller TileHandler. Dann müssen Sie entweder eine Möglichkeit haben, die zu verwendende Tilehandling-Methode anzugeben, oder Sie müssen einen anderen Handler aufrufen.
Wenn der TileHandler als Parameter an Objekte übergeben wurde, die ihn verwenden, können Sie beim nächsten Mal einfach einen anderen übergeben oder einen anderen Kachelhandler für Objekte festlegen, die ihn später verwenden.
Persönlich greife ich in einem statischen Kontext auf viele Dinge in meinen XNA-Spielen zu und gehe davon aus, dass ich nie mehr als eines davon haben werde.
Wenn Sie Ihren Game-Engine-Code in Ihrem nächsten Spiel wiederverwenden möchten, müssen Sie wahrscheinlich einen Großteil der Dinge, die Sie derzeit als statisch geschrieben haben, neu schreiben.
Zusamenfassend:
Um keinen statischen Kontext zu verwenden:
Wenn Sie Objekte so weit wie möglich als Parameter übergeben, werden Spielelemente entkoppelt und Sie können sie einfacher für aktuelle oder zukünftige Projekte ändern / wiederverwenden. Außerdem können Sie die Komplexität großer Codemengen etwas einfacher verwalten (denken Sie an Hunderte statischer Manager in Ihrer Spielklasse, in einem großen Spiel).
Für den statischen Kontext:
Das Deklarieren und Zugreifen auf Objekte aus einem statischen Kontext erleichtert das Schreiben kleiner Spiele, für die nicht Hunderte von statischen Managern erforderlich sind. Vereinfacht viele Methoden und Konstruktoren, indem kein oder mehrere zusätzliche Parameter erforderlich sind, auf die stattdessen statisch zugegriffen wird.