ArticleServiceFactory.java 1.4 KB
package com.aigeo.util.article;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Component
public class ArticleServiceFactory {

    private Map<String, ArticlePlatformService> platformServices;

    private final Map<String, ArticlePlatformService> serviceMap = new ConcurrentHashMap<>();

    @Autowired
    public void setPlatformServices(Map<String, ArticlePlatformService> platformServices) {
        this.platformServices = platformServices;
        initServiceMap();
    }

    private void initServiceMap() {
        for (ArticlePlatformService service : platformServices.values()) {
            serviceMap.put(service.getPlatform(), service);
        }
    }

    public ArticlePlatformService getArticleService(PlatformTypeEnum platformType) {
        ArticlePlatformService service = serviceMap.get(platformType.getPlatform());
        if (service == null) {
            throw new IllegalArgumentException("不支持的平台类型: " + platformType);
        }
        return service;
    }

    public ArticlePlatformService getArticleService(String platform) {
        ArticlePlatformService service = serviceMap.get(platform);
        if (service == null) {
            throw new IllegalArgumentException("不支持的平台类型: " + platform);
        }
        return service;
    }
}