设计模式之策略模式

设计模式之策略模式,第1张

设计模式策略模式 策略模式

策略模式跟状态模式是否相似,唯一的区别是策略模式无法在一个状态切换到另一个状态,所以叫做策略

可以看出策略模式一旦使用就注定,例如排序,我们使用了冒泡排序就无法使用选择排序;

但是状态模式不一样,状态模式是可以从一个状态切换到另一个状态;

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的微服务均衡负载时有不同环境。可以使用随机算法、轮询算法、还有根据服务器权重的算法等等。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5695482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存