Files
main_plugin_farm/core/database/dbServiceLocator.py
T
Diuse a6691595e5 🎨 使用Python包管理和模块访问
🎨 重构数据库结构, 使用集中式服务定位器与数据库交互
🎨 更改部分代码逻辑, 减小内存消耗
2025-11-30 16:45:13 +08:00

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()