MCPcopy Create free account
hub / github.com/MearaY/StegaPy / PluginManager

Class PluginManager

StegaPy/plugin_manager.py:28–71  ·  view source on GitHub ↗

插件管理器,负责系统内各类隐写和水印插件的注册、加载与生命周期管理。

Source from the content-addressed store, hash-verified

26
27
28class PluginManager:
29 """插件管理器,负责系统内各类隐写和水印插件的注册、加载与生命周期管理。"""
30
31 _plugins: Dict[str, StegaPyPlugin] = {}
32 _initialized = False
33
34 @classmethod
35 def load_plugins(cls):
36 """初始化并加载系统内置的所有算法插件。"""
37 if cls._initialized:
38 return
39
40 # 注册内置插件
41 cls._plugins['LSB'] = LSBPlugin()
42 cls._plugins['RandomLSB'] = RandomLSBPlugin()
43 cls._plugins['DWTDugad'] = DWTDugadPlugin()
44
45 cls._initialized = True
46
47 @classmethod
48 def get_plugin_by_name(cls, name: str) -> Optional[StegaPyPlugin]:
49 """根据指定的插件名称获取对应的插件实例。"""
50 if not cls._initialized:
51 cls.load_plugins()
52 return cls._plugins.get(name)
53
54 @classmethod
55 def get_all_plugins(cls) -> List[StegaPyPlugin]:
56 """获取当前系统已加载的所有插件列表。"""
57 if not cls._initialized:
58 cls.load_plugins()
59 return list(cls._plugins.values())
60
61 @classmethod
62 def get_plugins_by_purpose(cls, purpose):
63 """根据指定用途(如数据隐藏、数字水印)过滤并获取支持该功能的插件列表。"""
64 if not cls._initialized:
65 cls.load_plugins()
66
67 result = []
68 for plugin in cls._plugins.values():
69 if purpose in plugin.get_purposes():
70 result.append(plugin)
71 return result
72

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected