通过不同的路,到达相同的目的地,这就是策略模式。
使用不同的策略,完成最终相同的结果。
如:使用不同的优惠券,最总都是提交一份订单,只是付款金额不同。
例:对一个list,可以自定义不同的排序规则,进行排序:
1)测试类
package com.gupaoedu.vip.strategy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MyListTest {
public static void main(String[] args) {
//new MyList().sort(new NumberComparator());
//策略模式
// List<Long> numbers = new ArrayList<Long>();
//
// Collections.sort(numbers, new Comparator<Long>() {
//
// @Override
// //返回值是固定的
// //0 、-1 、1
// //0 、 >0 、<0
// public int compare(Long o1, Long o2) {
//
// //中间逻辑是不一样的
//
// return 0;
// }
//
//
// });
}
}
2)定义一个接口
package com.gupaoedu.vip.strategy;
public interface Comparator {
int compareTo(Object obj1,Object obj2);
}
3)自定义sort方法
package com.gupaoedu.vip.strategy;
public class MyList {
public void sort(Comparator com){
// com.compareTo(obj1, obj2);
System.out.println("执行逻辑");
}
}
4)自定义2种排序规则
package com.gupaoedu.vip.strategy;
public class NumberComparator implements Comparator{
@Override
public int compareTo(Object obj1, Object obj2) {
return 0;
}
}
package com.gupaoedu.vip.strategy;
public class ObjectComparator implements Comparator{
@Override
public int compareTo(Object obj1, Object obj2) {
return 0;
}
}