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()); } public CrawlStrategy getStrategy(String url) { CrawlStrategy bestStrategy = null; int highestPriority = -1; for (CrawlStrategy s : strategies) { if (s.supports(url) && s.getPriority() > highestPriority) { bestStrategy = s; highestPriority = s.getPriority(); } } if (bestStrategy != null) { return bestStrategy; } return new DefaultStrategy(); } public void register(CrawlStrategy strategy) { strategies.add(strategy); } }