介绍
策略模式定义一系列算法,并使它们可以相互替换。让算法独立于使用它的客户而独立变化。
使用场景:
1.同一类型问题有多种处理方式,仅仅是具体行为有差别时。
2.系统需要封装同类型一系列操作。
3.需要动态选择几种算法中的一种。
优点:
1.结构清晰、使用简单直观。
2.耦合度相对而言较低,扩展方便。
3.操作封装更为彻底,数据更为安全。
缺点:
1.随着策略的增加,子类也会变得繁多
UML类图
代码实现
Sort.java
public abstract class Sort {
public abstract void method();
}
QuickSort.java
public class QuickSort extends Sort {
@Override
public void method() {
System.out.println("This is QuickSort!");
}
}
SelectionSort.java
public class SelectionSort extends Sort {
@Override
public void method() {
System.out.println("This is SelectionSort!");
}
}
Main.java
public class Main {
public static void main(String[] args) {
Sort sort = select("SELECTION");
sort.method();
}
private static Sort select(String type) {
if (type.equals("SELECTION")) {
return new SelectionSort();
}else if (type.equals("QUICK")) {
return new QuickSort();
}
return null;
}
}
网友评论