package vip.xiaonuo.coldchain.core.service.dataprocess.handler;

import org.springframework.stereotype.Component;
import vip.xiaonuo.coldchain.core.service.dataprocess.model.ColdChainMessageData;

/**
 * DataHandlerFactory - 工厂类通过 Map 注册并返回适合的处理器
 */
@Component
public class DataHandlerFactory {

    /**
     * 根据数据类型返回相应的处理器
     *
     * @param data ColdChain 消息数据
     * @return 对应的 ColdChainDataHandler
     */
    public ColdChainDataHandler<? extends ColdChainMessageData> getDataHandler(ColdChainMessageData data) {
        // 从 HandlerRegistry 获取相应的处理器
        ColdChainDataHandler handler = ColdChainHandlerRegistry.getHandler(data.getClass());
        if (handler == null) {
            throw new IllegalArgumentException("无法处理该类型的数据: " + data.getClass().getSimpleName());
        }
        return handler;
    }
}



