策略模式跟状态模式是否相似,唯一的区别是策略模式无法在一个状态切换到另一个状态,所以叫做策略
可以看出策略模式一旦使用就注定,例如排序,我们使用了冒泡排序就无法使用选择排序;
但是状态模式不一样,状态模式是可以从一个状态切换到另一个状态;
public class Test { public static void main(String[] args) { int[] arr = {2, 4, 6, 12, 432, 43, 23, 65, 24, 34}; SortingStrategy.Sort(arr,new BubbleStrategy()); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } } } //排序策略抽象类 abstract class SortingStrategy { //排序方法 public abstract void Sorting(int arr[]); public static void Sort(int[] arr,SortingStrategy strategy){ strategy.Sorting(arr); } } //策略实现类(选择排序) class SelectStrategy extends SortingStrategy { @Override public void Sorting(int[] arr) { for(int i=0;iarr[j]){ arr[i]=arr[j]+arr[i]; arr[j]=arr[i]-arr[j]; arr[i]=arr[i]-arr[j]; } } } } } //策略实现类(冒泡排序) class BubbleStrategy extends SortingStrategy { @Override public void Sorting(int[] arr) { for(int i=0;iarr[j]){ arr[j-1]=arr[j]+arr[j-1]; arr[j]=arr[j-1]-arr[j]; arr[j-1]=arr[j-1]-arr[j]; } } } } }
上面我写了一个策略抽象类,当然也可以写成接口,
当我们想使用那个策略,我们就可以new出自己想要的策略
使用场景:在java的微服务均衡负载时有不同环境。可以使用随机算法、轮询算法、还有根据服务器权重的算法等等。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)