import java.util.*;
public class Main{
public static void main(String[] args) {
Context context = new Context(); //建立環境
Scanner scanner = new Scanner(System.in);
boolean end = false;
System.out.println("申請已送出,請等待審核結果。");
while (!end){
System.out.println("請輸入選項(1:審核通過;2:繼續審核;3:結束程式):");
int num = scanner.nextInt();
if (num == 1){
end = context.Handle(true); //處理請求
} else if (num == 2){
end = context.Handle(false); //處理請求
} else if (num == 3){
end = true;
} else {
System.out.println("請輸入正確指令" );
}
}
}
}
//環境類
class Context {
private State state;
// 定義環境類的初始狀態
public Context() {
this.state = new ConcreteStateA();
}
//設定狀態
public void setState(State state) {
this.state = state;
}
//讀取狀態
public State getState() {
return(state);
}
//處理請求
public boolean Handle(boolean status) {
return state.Handle(this, status);
}
}
//抽象狀態
abstract class State {
public abstract boolean Handle(Context context, boolean status);
}
//實體狀態A:業務審核
class ConcreteStateA extends State {
public boolean Handle(Context context, boolean status) {
if (status){
System.out.println("資料填寫完整,業務審核通過,準備進入行員審核。");
context.setState(new ConcreteStateB());
} else {
System.out.println("業務審核中。");
}
return false;
}
}
//實體狀態B:行員審核
class ConcreteStateB extends State {
public boolean Handle(Context context, boolean status) {
if (status){
System.out.println("行員審核通過,準備進入信用卡部審核。");
context.setState(new ConcreteStateC());
} else {
System.out.println("行員審核中。");
}
return false;
}
}
//實體狀態C:信用卡部審核
class ConcreteStateC extends State {
public boolean Handle(Context context, boolean status) {
if (status){
System.out.println("信用卡部審核通過,寄送信用卡。");
return true;
} else {
System.out.println("信用卡部審核中。");
return false;
}
}
}