跳到主要内容

工厂模式的演变

最简单的工厂模式

    public static SortStrategy getSortingStrategy(String strategyName) {
return switch (strategyName) {
case "bubble" -> new BubbleSort();
case "selection" -> new SelectionSort();
case "merge" -> new MergeSort();
case "quick" -> new QuickSort();
default -> new ShellSort();
};
}

基于HashMap的工厂模式

class SortFactory {
static Map<String, SortStrategy> strategyMap = new HashMap<>();

// initialize the strategy instances.
static {
strategyMap.put("quicksort", new QuickSort());
strategyMap.put("mergesort", new MergeSort());
strategyMap.put("heapsort", new HeapSort());
}

public static SortStrategy getSortStrategy(String sortType) {
// Return strategy from map, default to BubbleSort.
return strategyMap.getOrDefault(sortType, new BubbleSort());
}
}

基于反射的工厂模式

    static {
Properties props = new Properties();
try (InputStream input = SortFactory.class.getClassLoader().getResourceAsStream(CONFIG_FILE)) {
props.load(input);
for (String sortName : props.stringPropertyNames()) {
String className = props.getProperty(sortName);
Class<?> clazz = Class.forName(className); // Load class dynamically
SortStrategy strategy = (SortStrategy) clazz.getDeclaredConstructor().newInstance(); // Instantiate
strategyMap.put(sortName.toLowerCase(), strategy);
}
} catch (Exception e) {
// No error handling for simplicity
}
strategyMap.putIfAbsent("bubblesort", DEFAULT_STRATEGY); // Ensure default
}