日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

《研磨设计模式》chap18 状态模式state(1)模式简介

發布時間:2025/3/21 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《研磨设计模式》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)模式简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。