package com.example.datacollect.strategy; import java.util.ArrayList; import java.util.List; public class StrategyFactory { private final List strategies = new ArrayList<>(); public StrategyFactory() { strategies.add(new HnuNewsStrategy()); strategies.add(new BlogStrategy()); strategies.add(new NewsStrategy()); //注册默认策略 strategies.add(new DefaultStrategy()); } public CrawlStrategy getStrategy(String url) { //按优先级降序排序 return strategies.stream() .sorted((s1, s2) -> Integer.compare(s2.getPriority(), s1.getPriority())) .filter(s -> s.supports(url)) .findFirst() .orElse(null); // 如果默认策略未匹配到,返回 null 或默认策略本身 } public void register(CrawlStrategy strategy) { strategies.add(strategy); } }