java策略模式
Uml图:

?
策略:
?
public interface ComputableStrategy { public abstract double computeScore( double [] a);} public class StrataegyOne implements ComputableStrategy { @Override public double computeScore(double[] a) { double score=0,sum=0; for (int i = 0; i < a.length; i++) { sum+=a[i]; } score=sum/a.length; return score; }}?上下文:public class GymnasticsGame { ComputableStrategy strategy; public void setStrategy(ComputableStrategy strategy) { this.strategy=strategy; } public double getPersonScore(double[] a) { if (strategy!=null) { return strategy.computeScore(a); } else { return 0; } }}?public class Application { public static void main(String[] args) { double[] a = { 1, 5, 7.9, 9.8 }; double[] b = { 3, 5, 6, 9, 9.7 }; GymnasticsGame game = new GymnasticsGame();// 上下文对象 game.setStrategy(new StrataegyOne());// 使用策略1 System.out.println("使用策略1"); System.out.println(game.getPersonScore(a)); System.out.println(game.getPersonScore(b)); System.out.println("使用策略2"); game.setStrategy(new StrategyTwo());// 使用策略1 System.out.println(game.getPersonScore(a)); System.out.println(game.getPersonScore(b)); }}?