《研磨设计模式》chap18 状态模式state(1)模式简介
生活随笔
收集整理的這篇文章主要介紹了
《研磨设计模式》chap18 状态模式state(1)模式简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景:投票管理
1. 正常編碼
//投票管理 public class VoteManager {//記錄用戶投票的結果,Map<String,String>對應Map<用戶名稱,投票的選項> private Map<String,String> mapVote = new HashMap<String,String>();//記錄用戶投票次數,Map<String,Integer>對應Map<用戶名稱,投票的次數> private Map<String,Integer> mapVoteCount = new HashMap<String,Integer>();//投票 public void vote(String user,String voteItem){//1:先為該用戶增加投票的次數//先從記錄中取出已有的投票次數Integer oldVoteCount = mapVoteCount.get(user);if(oldVoteCount==null){oldVoteCount = 0;}oldVoteCount = oldVoteCount + 1;mapVoteCount.put(user, oldVoteCount);//2:判斷該用戶投票的類型,到底是正常投票、重復投票、惡意投票還是上黑名單//然后根據投票類型來進行相應的操作 if(oldVoteCount==1){//正常投票//記錄到投票記錄中mapVote.put(user, voteItem);System.out.println("恭喜你投票成功");}else if(oldVoteCount>1 && oldVoteCount<5){//重復投票//暫時不做處理System.out.println("請不要重復投票");}else if(oldVoteCount >= 5 && oldVoteCount<8){//惡意投票//取消用戶的投票資格,并取消投票記錄String s = mapVote.get(user);if(s!=null){mapVote.remove(user);}System.out.println("你有惡意刷票行為,取消投票資格");}else if(oldVoteCount>=8){//黑名單//記入黑名單中,禁止登錄系統了System.out.println("進入黑名單,將禁止登錄和使用本系統");}} }public class Client {public static void main(String[] args) {VoteManager vm = new VoteManager();for(int i=0;i<8;i++){vm.vote("u1", "A");}} }輸出結果:
恭喜你投票成功 請不要重復投票 請不要重復投票 請不要重復投票 你有惡意刷票行為,取消投票資格 你有惡意刷票行為,取消投票資格 你有惡意刷票行為,取消投票資格 進入黑名單,將禁止登錄和使用本系統2. 狀態模式
public interface State {//狀態對應的處理 public void handle(String sampleParameter); }public class Context {//持有一個State類型的對象實例 private State state;//設置實現State的對象的實例 public void setState(State state) {this.state = state;}//用戶感興趣的接口方法 public void request(String sampleParameter) {//在處理中,會轉調state來處理state.handle(sampleParameter);} }public class ConcreteStateA implements State {public void handle(String sampleParameter) {//實現具體的處理} } 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的《研磨设计模式》chap18 状态模式state(1)模式简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《研磨设计模式》chap12 观察者模式
- 下一篇: 《研磨设计模式》chap18 状态模式s