mirror of
https://github.com/Shu-Ying/main_plugin_farm.git
synced 2026-11-03 03:00:43 +08:00
🎨 使用Python包管理和模块访问
🎨 重构数据库结构, 使用集中式服务定位器与数据库交互 🎨 更改部分代码逻辑, 减小内存消耗
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user