Files
django-vue3-admin/backend/plugins/eip_sync/sync/factory.py

26 lines
711 B
Python

from __future__ import annotations
from typing import Any, Dict, Type
from sync.base import BaseSyncAdapter
class SyncFactory:
"""Creates sync adapters by registered name."""
_adapters: Dict[str, Type[BaseSyncAdapter]] = {}
@classmethod
def register(cls, name: str, adapter_class: Type[BaseSyncAdapter]) -> None:
cls._adapters[name] = adapter_class
@classmethod
def create(cls, name: str, **kwargs: Any) -> BaseSyncAdapter:
if name not in cls._adapters:
raise ValueError(f"未注册的同步适配器: {name}")
return cls._adapters[name](**kwargs)
@classmethod
def list_adapters(cls) -> list:
return list(cls._adapters.keys())