Ratschläge zur Mischung aus Singleton- und Staatsdesignmuster in Python
Posted: 22 May 2025, 11:28
In Pygame mache ich ein Spiel und soweit ich weiß, schafft niemand zwei Instanzen eines Spiels (rechtfertigt Singleton), und mein Spiel hat verschiedene Zustände wie "Startmenü", "Spiel über", "Spielen" (rechtfertigt "staatliche Designmuster) < /p>
Zuerst wollte ich zuerst die Staaten erzwingen. Geist: < /p>
Und dies ist mein Gamemeta
und ähnliche Klassen von StartMenu , und in meinem main.py habe ich game startet die Spielinstanz:
class Game(metaclass=GameMeta):
def __init__(self):
self.current_state: GameState = StartMenu()
self.screen = None
< /code>
Gibt es eine Anzeichen von schlechter Praxis? Ich mische Singleton und Staatsmuster, irgendwelche Fehler? oder Verletzung des Entwurfsmusters oder des Prinzips? Ist das eine schlechte Idee insgesamt?
Zuerst wollte ich zuerst die Staaten erzwingen. Geist: < /p>
Code: Select all
class GameState(ABC):
@abstractmethod
def exit(self):
pass
Code: Select all
class GameMeta(type):
_instances = {}
def __call__(cls):
if cls not in cls._instances:
instance = super().__call__()
cls._instances[cls] = instance
return cls._instances[cls]
< /code>
Ich habe < /p>
class StartMenu(GameState):
def exit(self):
pass
< /code>
als Spielstatus. Ich habe auch GameOver
class Game(metaclass=GameMeta):
def __init__(self):
self.current_state: GameState = StartMenu()
self.screen = None
< /code>
Gibt es eine Anzeichen von schlechter Praxis? Ich mische Singleton und Staatsmuster, irgendwelche Fehler? oder Verletzung des Entwurfsmusters oder des Prinzips? Ist das eine schlechte Idee insgesamt?