package strategy; import java.util.List; import java.util.ArrayList; public class StrategyFactory { private final List STRATEGIES = new ArrayList<>(); public StrategyFactory() { STRATEGIES.add(new CNKIStrategy()); STRATEGIES.add(new IEEEStrategy()); STRATEGIES.add(new ACMDigitalLibraryStrategy()); STRATEGIES.add(new SpringerLinkStrategy()); STRATEGIES.add(new ScienceDirectStrategy()); STRATEGIES.add(new ArXivStrategy()); STRATEGIES.add(new SemanticScholarStrategy()); } /** * 根据URL创建对应的爬虫策略 * @param url 要创建策略的URL * @return 对应的爬虫策略,如果URL不支持任何策略则返回null */ public CrawlerStrategy createCrawlerByUrl(String url) { for (CrawlerStrategy strategy : STRATEGIES) { if (strategy.supportsUrl(url)) { return strategy; } } return null; } public int getPlatformCount() { return STRATEGIES.size(); } public List getAllStrategies() { return STRATEGIES; } }