定义
使用场景
UML图
代码实现
public interface Strategy {
public void sort(Integer[] arr);
}
public class AscStrategy implements Strategy {
@Override
public void sort(Integer[] arr) {
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1 > o2){
return 1;
}
return -1;
}
};
Arrays.sort(arr,comparator);
}
}
public class DescStrategy implements Strategy {
@Override
public void sort(Integer[] arr) {
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1<o2){
return 1;
}
return -1;
}
};
Arrays.sort(arr,comparator);
}
}
public class ArrayUser {
private Strategy strategy;
public ArrayUser(Strategy strategy) {
this.strategy = strategy;
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void mySort(Integer[] arr){
strategy.sort(arr);
}
}
public class Client {
public static void main(String[] args) {
ArrayUser arrayUser = new ArrayUser(new AscStrategy());
Integer[] arr = {9,4,7,5,8,2,3,1};
arrayUser.mySort(arr);
System.out.println(Arrays.toString(arr));
arrayUser.setStrategy(new DescStrategy());
arrayUser.mySort(arr);
System.out.println(Arrays.toString(arr));
}
}
总结
- 用于替换整体算法。
- 使用聚合的方式进行解耦,采用接口实现的方式进行实现(面向接口编程)。