package com.example.datacollect.strategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; public class StrategyFactory { private static final Logger logger = LoggerFactory.getLogger(StrategyFactory.class); private final List strategies = new ArrayList<>(); public StrategyFactory() { // 注册所有策略 strategies.add(new BlogStrategy()); strategies.add(new NewsStrategy()); logger.info("StrategyFactory initialized with {} strategies", strategies.size()); } public CrawlStrategy getStrategy(String url) { if (url == null || url.isBlank()) { logger.warn("Null or blank URL provided to getStrategy"); return null; } for (CrawlStrategy strategy : strategies) { if (strategy.supports(url)) { logger.debug("Found strategy {} for URL: {}", strategy.getClass().getSimpleName(), url); return strategy; } } logger.warn("No strategy found for URL: {}", url); return null; } public void registerStrategy(CrawlStrategy strategy) { if (strategy != null) { strategies.add(strategy); logger.info("Registered new strategy: {}", strategy.getClass().getSimpleName()); } } }