You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.1 KiB

package strategy;
import java.util.List;
import java.util.ArrayList;
public class StrategyFactory {
private final List<CrawlerStrategy> 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<CrawlerStrategy> getAllStrategies() {
return STRATEGIES;
}
}