Page 1 of 1

Ratschläge zur Mischung aus Singleton- und Staatsdesignmuster in Python

Posted: 22 May 2025, 11:28
by Anonymous
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>

Code: Select all

class GameState(ABC):

@abstractmethod
def exit(self):
pass
Und dies ist mein Gamemeta

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 
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?