You've already forked HeurAMS-Legacy
更新
This commit is contained in:
31
src/heurams/kernel/puzzles/registry.py
Normal file
31
src/heurams/kernel/puzzles/registry.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# registry.py
|
||||
from typing import Dict, Type, Any
|
||||
from base import BasePuzzle
|
||||
|
||||
class PuzzleRegistry:
|
||||
"""谜题注册表"""
|
||||
|
||||
def __init__(self):
|
||||
self._puzzles: Dict[str, Type[BasePuzzle]] = {}
|
||||
|
||||
def register(self, name: str, puzzle_class: Type[BasePuzzle]):
|
||||
"""注册谜题类"""
|
||||
self._puzzles[name] = puzzle_class
|
||||
return puzzle_class
|
||||
|
||||
def create(self, name: str, **kwargs) -> BasePuzzle:
|
||||
"""创建谜题实例"""
|
||||
if name not in self._puzzles:
|
||||
raise ValueError(f"未知的谜题类型: {name}")
|
||||
return self._puzzles[name](**kwargs)
|
||||
|
||||
def list_available(self) -> list:
|
||||
"""获取可用的谜题类型列表"""
|
||||
return list(self._puzzles.keys())
|
||||
|
||||
def get_class(self, name: str) -> Type[BasePuzzle]:
|
||||
"""获取谜题类"""
|
||||
return self._puzzles.get(name) # type: ignore
|
||||
|
||||
# 全局注册表实例
|
||||
registry = PuzzleRegistry()
|
||||
Reference in New Issue
Block a user