策略模式是一个非常简单的模式。它定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
考虑到我在做一个剪刀石头布的游戏,可以和计算机对战。计算机的难度等级分为2个等级:普通难度和无法战胜难度。普通难度是指电脑会随机出石头、剪刀、布,而无法战胜难度是指电脑会“作弊”,电脑会事先知道玩家出的是什么手势。如果玩家出的是剪刀,那么电脑会出石头,玩家永远的无法取胜。
那么,这两个难度分别代表两种算法,为了使得它们能够被游戏的主类装载,它们都应该继承于同一个接口或类,并暴露出电脑出手势的方法,代码如下:
import java.util.Random;
import java.util.Scanner;
interface GameStrategy{
int play(int player);
}
class FingerGuessing{
Scanner playerScanner = new Scanner(System.in);
public String toString(int finger){
switch (finger){
case 1:
return "石头";
case 2:
return "剪刀";
case 3:
return "布";
default:
return "错误!";
}
}
public void start(GameStrategy comStrategy){
boolean gameOver = false;
while (!game