mirror of
https://github.com/Shu-Ying/main_plugin_farm.git
synced 2026-11-01 07:19:59 +08:00
86 lines
2.0 KiB
Python
86 lines
2.0 KiB
Python
from typing import Any, Optional
|
|
|
|
from zhenxun.services.log import logger
|
|
|
|
|
|
class CDBServiceLocator:
|
|
"""
|
|
数据库服务定位器
|
|
负责管理所有数据库服务实例,提供统一的访问接口
|
|
"""
|
|
|
|
m_pInstance: Optional["CDBServiceLocator"] = None
|
|
|
|
def __init__(self):
|
|
self.m_pServices: dict[str, Any] = {}
|
|
self.m_bInitialized = False
|
|
|
|
@classmethod
|
|
def getInstance(cls) -> "CDBServiceLocator":
|
|
"""
|
|
获取单例实例
|
|
"""
|
|
if cls.m_pInstance is None:
|
|
cls.m_pInstance = cls()
|
|
return cls.m_pInstance
|
|
|
|
def register(self, name: str, service: Any) -> None:
|
|
"""
|
|
注册服务实例
|
|
"""
|
|
if name in self.m_pServices:
|
|
logger.error(f"真寻农场服务 {name} 已经注册")
|
|
self.m_pServices[name] = service
|
|
|
|
def get(self, name: str) -> Any:
|
|
"""
|
|
获取服务实例
|
|
"""
|
|
if name not in self.m_pServices:
|
|
raise KeyError(f"服务 {name} 未注册")
|
|
return self.m_pServices[name]
|
|
|
|
def getPlantManager(self):
|
|
return self.get("plant")
|
|
|
|
def getUserManager(self):
|
|
return self.get("user")
|
|
|
|
def getUserSoilManager(self):
|
|
return self.get("userSoil")
|
|
|
|
def getUserPlantManager(self):
|
|
return self.get("userPlant")
|
|
|
|
def getUserSeedManager(self):
|
|
return self.get("userSeed")
|
|
|
|
def getUserItemManager(self):
|
|
return self.get("userItem")
|
|
|
|
def getUserStealManager(self):
|
|
return self.get("userSteal")
|
|
|
|
def getUserSignManager(self):
|
|
return self.get("userSign")
|
|
|
|
def getUserPlantCountManager(self):
|
|
return self.get("userPlantCount")
|
|
|
|
def markInitialized(self):
|
|
"""
|
|
标记初始化完成
|
|
"""
|
|
self.m_bInitialized = True
|
|
|
|
@property
|
|
def initialized(self) -> bool:
|
|
"""
|
|
检查是否已初始化
|
|
"""
|
|
return self.m_bInitialized
|
|
|
|
|
|
# 全局服务定位器实例
|
|
g_pDBlocator = CDBServiceLocator.getInstance()
|