strategy =策=略=模=式


一种多态。美女选美,有多种不同的选美策略(长相、胸部、腿形)将策略抽象出一个接口和一个对外调用策略的方法,外部调用策略时,只需面向接口编程,调用接口的方法。实际传入的是实现了具体策略的实现类。

策略抽象接口

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

    default void m() {
        System.out.println("m");
    }
}

策略的具体实现类

public class DogComparator implements Comparator<Dog> {
    @Override
    public int compare(Dog o1, Dog o2) {
        if(o1.food < o2.food) return -1;
        else if (o1.food > o2.food) return 1;
        else return 0;
    }
}

策略调用

public class Sorter<T> {

    public void sort(T[] arr, Comparator<T> comparator) {
        for(int i=0; i<arr.length - 1; i++) {
            int minPos = i;

            for(int j=i+1; j<arr.length; j++) {
                minPos = comparator.compare(arr[j],arr[minPos])==-1 ? j : minPos;
            }
            swap(arr, i, minPos);
        }
    }
    
    void swap(T[] arr, int i, int j) {
        T temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}
发布了40 篇原创文章 · 获赞 0 · 访问量 414

猜你喜欢

转载自blog.csdn.net/weixin_43780400/article/details/105458185