package com.qqchen.deploy.backend.framework.monitor;

import com.qqchen.deploy.backend.framework.enums.MonitorMetricEnum;

import java.util.HashMap;
import java.util.Map;

/**
 * 服务器阈值检测器工厂抽象类
 * Framework 提供的工厂能力
 *
 * @author qqchen
 * @since 2025-12-07
 */
public abstract class ServerThresholdCheckerFactory<T> {
    
    protected Map<MonitorMetricEnum, IServerThresholdChecker<T>> checkers = new HashMap<>();
    
    /**
     * 获取指定监控指标的检测器
     *
     * @param metric 监控指标类型
     * @return 对应的检测器
     * @throws IllegalArgumentException 如果找不到对应的检测器
     */
    public IServerThresholdChecker<T> getChecker(MonitorMetricEnum metric) {
        IServerThresholdChecker<T> checker = checkers.get(metric);
        if (checker == null) {
            throw new IllegalArgumentException("未找到监控指标的检测器: " + metric);
        }
        return checker;
    }
    
    /**
     * 注册检测器
     * 子类需要实现此方法来注册所有检测器
     */
    protected abstract void registerCheckers();
}
