using GFramework.Core.Abstractions.utility;
namespace GFramework.Game.Abstractions.ui;
///
/// UI工厂接口,用于创建UI页面实例
///
public interface IUiFactory : IContextUtility
{
///
/// 创建或获取UI页面实例
///
/// UI标识键
/// 实例管理策略
/// UI页面实例
IUiPageBehavior GetOrCreate(string uiKey, UiInstancePolicy policy = UiInstancePolicy.AlwaysCreate);
///
/// 仅创建新实例(不使用缓存)
///
IUiPageBehavior Create(string uiKey);
///
/// 预加载UI资源到缓存池
///
/// UI标识键
/// 预加载数量,默认1个
void Preload(string uiKey, int count = 1);
///
/// 批量预加载
///
void PreloadBatch(params string[] uiKeys);
///
/// 回收实例到缓存池
///
/// 要回收的页面实例
void Recycle(IUiPageBehavior page);
///
/// 清理指定UI的缓存实例
///
void ClearCache(string uiKey);
///
/// 清理所有缓存
///
void ClearAllCache();
///
/// 检查是否有缓存的实例
///
bool HasCached(string uiKey);
#region 缓存策略管理
///
/// 获取UI的缓存配置
///
/// UI标识符
/// 缓存配置,如果未设置则返回默认配置
UiCacheConfig GetCacheConfig(string uiKey);
///
/// 设置UI的缓存配置
///
/// UI标识符
/// 缓存配置
void SetCacheConfig(string uiKey, UiCacheConfig config);
///
/// 移除UI的缓存配置,恢复默认配置
///
/// UI标识符
void RemoveCacheConfig(string uiKey);
///
/// 获取所有UI的缓存统计信息
///
/// 缓存统计字典
IDictionary GetCacheStatistics();
#endregion
}