栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式之策略模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式之策略模式

策略模式

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

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

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

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的微服务均衡负载时有不同环境。可以使用随机算法、轮询算法、还有根据服务器权重的算法等等。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/695337.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号