package com.sundot.airport.common.service.portrait;


import com.sundot.airport.common.domain.portrait.IndicatorCalculateParams;
import com.sundot.airport.common.domain.portrait.BaseModuleIndicatorResult;

/**
 * 指标接口 - 所有具体指标类的父接口
 * 定义了指标类需要实现的基本方法
 *
 * @param <T> 指标值的类型
 */
public interface Indicator<T> {
    /**
     * 获取指标名称
     *
     * @return 指标名称字符串
     */
    String getName();

    /**
     * 获取指标值
     *
     * @return 指标值
     */
    T getValue();


    /**
     * 计算指标值（使用参数对象）
     *
     * @param params 指标计算参数
     */
    void calculate(IndicatorCalculateParams params);

    /**
     * 将指标值设置到结果对象中
     *
     * @param result 结果对象
     */
    void setResult(BaseModuleIndicatorResult result);
}