策略模式在开源代码中应用

2020-08-04

策略模式的作用:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。

 

案例

java.util.Comparator 接口定义元素之间的比较方法,如,有 compare 方法

public interface Comparator<T> {
	int compare(T o1, T o2);
}

 

Arrays 工具类,指定 Comparator 进行排序

public class Arrays {
	
	public static void sort(int[] a) {
        DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);
    }
}

 

java.util.List,指定 Comparator 进行排序

public interface List<E> extends Collection<E> {
    
	@SuppressWarnings({"unchecked", "rawtypes"})
    default void sort(Comparator<? super E> c) {
        Object[] a = this.toArray();
        Arrays.sort(a, (Comparator) c);
        ListIterator<E> i = this.listIterator();
        for (Object e : a) {
            i.next();
            i.set((E) e);
        }
    }
}

 

TreeMap 构造方法指定 Comparator,put 元素时,进行比较、排序

ConstXiong 备案号:苏ICP备16009629号-3