今天研究了一下Gof的设计模式中的Template Method模式,参照书写了个小程序,供大家分享。
1. abstractGuessGame.java
package
guessgame;
public abstract class abstractGuessGame ... {
private int number;
public void setNumber(int number)...{
this.number=number;
}
public void start()...{
showmessage("欢迎");
int guess=0;
do...{
guess=getUserInput();
if (guess>number)...{
showmessage("输入的数字比较大");
}
else if (guess<number)...{
showmessage("输入的数字比较小");
}
else...{
showmessage("中了");
}
}while(guess!=number);
}
protected abstract void showmessage(String message);
protected abstract int getUserInput();
}
public abstract class abstractGuessGame ... {
private int number;
public void setNumber(int number)...{
this.number=number;
}
public void start()...{
showmessage("欢迎");
int guess=0;
do...{
guess=getUserInput();
if (guess>number)...{
showmessage("输入的数字比较大");
}
else if (guess<number)...{
showmessage("输入的数字比较小");
}
else...{
showmessage("中了");
}
}while(guess!=number);
}
protected abstract void showmessage(String message);
protected abstract int getUserInput();
}
2. TextModeGame.java
package
guessgame;
import java.util.Scanner;
/** */ /**
* @author tjin
*
*/
public class TextModeGame extends abstractGuessGame ... {
private Scanner scanner;
public TextModeGame()...{
scanner=new Scanner(System.in);
}
protected void showmessage(String message)...{
System.out.println(message);
}
protected int getUserInput()...{
System.out.println("请输入数字");
return scanner.nextInt();
}
}
import java.util.Scanner;
/** */ /**
* @author tjin
*
*/
public class TextModeGame extends abstractGuessGame ... {
private Scanner scanner;
public TextModeGame()...{
scanner=new Scanner(System.in);
}
protected void showmessage(String message)...{
System.out.println(message);
}
protected int getUserInput()...{
System.out.println("请输入数字");
return scanner.nextInt();
}
}
3 GuessGameDemo.java
package
guessgame;
import java.util.Scanner;
/** */ /**
* @author tjin
*
*/
public class TextModeGame extends abstractGuessGame ... {
private Scanner scanner;
public TextModeGame()...{
scanner=new Scanner(System.in);
}
protected void showmessage(String message)...{
System.out.println(message);
}
protected int getUserInput()...{
System.out.println("请输入数字");
return scanner.nextInt();
}
}
import java.util.Scanner;
/** */ /**
* @author tjin
*
*/
public class TextModeGame extends abstractGuessGame ... {
private Scanner scanner;
public TextModeGame()...{
scanner=new Scanner(System.in);
}
protected void showmessage(String message)...{
System.out.println(message);
}
protected int getUserInput()...{
System.out.println("请输入数字");
return scanner.nextInt();
}
}
这里使用了java.util包中的Scanner类作为输入的包装类,这是在jdk1.5以后才有的新特征,可以把它理解成文本扫描器。