生活随笔
收集整理的這篇文章主要介紹了
《研磨设计模式》chap18 状态模式state(4)例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
public class StateMachine {//持有一個狀態對象 private State state = null
;//包含流程處理需要的業務數據對象,不知道具體類型,用Object,反正只是傳遞到具體的狀態對象里面 private Object businessVO = null
;//執行工作,客戶端處理流程的接口方法。 public void doWork(){//轉調相應的狀態對象真正完成功能處理this.state.
doWork(this
);}public State getState() {return state
;}public void setState(State state) {this.state = state
;}public Object getBusinessVO() {return businessVO
;}public void setBusinessVO(Object businessVO) {this.businessVO = businessVO
;}
}public class LeaveRequestContext extends StateMachine{//這里可以擴展跟自己流程相關的處理
}public interface State {//執行狀態對應的功能處理 public void
doWork(StateMachine ctx
);
}public interface LeaveRequestState extends State{//這里可以擴展跟自己流程相關的處理
}public class DepManagerState implements LeaveRequestState{public void doWork(StateMachine request) {//先把業務對象造型回來LeaveRequestModel lrm =
(LeaveRequestModel
)request.
getBusinessVO();//業務處理,把審核結果保存到數據庫中//部門經理審核過后,直接轉向審核結束狀態了request.
setState(new
AuditOverState());//給申請人增加一個工作,讓他察看審核結果
}
}public class ProjectManagerState implements LeaveRequestState{public void doWork(StateMachine request) {//先把業務對象造型回來LeaveRequestModel lrm =
(LeaveRequestModel
)request.
getBusinessVO();System.out.
println("項目經理審核中,請稍候......");//模擬用戶處理界面,通過控制臺來讀取數據System.out.
println(lrm.
getUser()+
"申請從"+lrm.
getBeginDate()+
"開始請假"+lrm.
getLeaveDays()+
"天,請項目經理審核(1為同意,2為不同意):");//讀取從控制臺輸入的數據Scanner scanner = new
Scanner(System.in
);if(scanner.hasNext()){int a = scanner.
nextInt();//設置回到上下文中String result =
"不同意";if(a==1){result =
"同意";}lrm.
setResult("項目經理審核結果:"+result
);//根據選擇的結果和條件來設置下一步if(a==1){if(lrm.getLeaveDays() > 3){//如果請假天數大于3天,而且項目經理同意了,就提交給部門經理request.
setState(new
DepManagerState());//繼續執行下一步工作request.
doWork();}else{//3天以內的請假,由項目經理做主,就不用提交給部門經理了,轉向審核結束狀態request.
setState(new
AuditOverState());//繼續執行下一步工作request.
doWork();} }else{//項目經理要是不同意的話,也就不用提交給部門經理了,轉向審核結束狀態request.
setState(new
AuditOverState());//繼續執行下一步工作request.
doWork();} } }
}
總結
以上是生活随笔為你收集整理的《研磨设计模式》chap18 状态模式state(4)例子的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。