策略模式–评分方案
在多个裁判负责打分的比赛中,每位裁判给选手一个得分,选手的最后得分是根据全体裁判的得分计算出来的。请给出几种计算选手得分的评分方案(策略),对于某次比赛,可以从你的方案中选择一种方案作为本次比赛的评分方案。结构如下:
1.工程文件
2.Strategy.java
package strategy_model;
public interface Strategy {
public double computerAverage(double[]a);
}
3.AverageScore.java
package strategy_model;
public class AverageScore{
Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy=strategy;
}
public double getAverage(double[]a) {
return strategy.computerAverage(a);
}
}
4.StrategyA.java
package strategy_model;
public class StrategyA implements Strategy{
public double computerAverage(double []a) {
double score=0,sum=0;
for(int i=0;i<a.length;i++) {
sum=sum+a[i];
}
score=sum/a.length;
return score;
}
}
5.StrategyB.java
package strategy_model;
import java.util.Arrays;
public class StrategyB implements Strategy{
public double computerAverage(double []a) {
if(a.length<=2)
return 0;
double score=0,sum=0;
Arrays.sort(a);
for(int i=1;i<a.length-1;i++) {
sum=sum+a[i];
}
score=sum/(a.length-2);
return score;
}
}
6.Application.java
package strategy_model;
public class Application{
public static void main(String args[]){
AverageScore game=new AverageScore();
game.setStrategy(new StrategyA());
double [] a={9.12,9.25,8.87,9.99,6.99,7.88};
double aver = game.getAverage(a) ;
System.out.println(aver);
}
}