国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Java如何通過枚舉實現有限狀態機

瀏覽:4日期:2022-08-29 16:38:34

首先在枚舉類中 定義state 和定義的抽象方法。

public enum JavaPlatformState { // 定義state OPEN{ @Override void exit(JavaPlatformMachine pm){super.exit(pm);}@Override void valid(JavaPlatformMachine pm){ this.exit(pm); if(pm.data.getValid_()){pm.state =STEP1; }else{NotFound();pm.state =OFF; } pm.state.entry(pm); } @Override void first(JavaPlatformMachine pm) {} @Override void businessLine(JavaPlatformMachine pm) {} @Override void district(JavaPlatformMachine pm) {} }, STEP1{ @Override void exit(JavaPlatformMachine pm){super.exit(pm);} @Override void valid(JavaPlatformMachine pm) {} @Override void first(JavaPlatformMachine pm){ this.exit(pm); if(!pm.data.getFirst_()){pm.state =STEP2; }else{ReturnDimension();pm.state =OFF; } pm.state.entry(pm); } @Override void businessLine(JavaPlatformMachine pm) {} @Override void district(JavaPlatformMachine pm) {} }, ... //狀態模式 提取的接口 在常量實體類中實現抽象方法 abstract void valid(JavaPlatformMachine pm); abstract void first(JavaPlatformMachine pm); abstract void businessLine(JavaPlatformMachine pm); abstract void district(JavaPlatformMachine pm); }

在enum JavaPlatformState 中,除了狀態模式 提取的接口外,添加了狀態機的各種動作action實現

//狀態機的各種動作action methode void entry(JavaPlatformMachine pm){System.out.println('→'+pm.state.name());} void exit(JavaPlatformMachine pm){System.out.println(pm.state.name()+'→ ');} void NotFound(){System.out.println('NotFound');} void ReturnDimension(){System.out.println('ReturnDimension');} void PreciseAdvertising(){System.out.println('PreciseAdvertising');} void Top9(){System.out.println('Top9');}

建立狀態機實體,ContextData是封裝條件的bean類,初始化狀態OPEN,在狀態機里定義action,調用對應state的相應的方法。

public class ContextData { private Boolean isValid_;//廣告位是否有效 private Boolean isFirst_;//是否第一次請求 private Boolean isBusinessLine_;//是否屬于業務線廣告位 private Boolean district_;//是否有地域 ...}

public class JavaPlatformMachine { ContextData data = new ContextData(); JavaPlatformState state = JavaPlatformState.OPEN; //Action public void valid(){state.valid(this);} public void first(){state.first(this);} public void businessLine(){state.businessLine(this);} public void district(){state.district(this);}}

測試方法,初始化狀態機,設置參數,按次序調用對應的Action

JavaPlatformMachine pm = new JavaPlatformMachine(); pm.data.setValid_(true);// 廣告位是否有效 pm.data.setFirst_(false);// 是否第一次請求 pm.data.setBusinessLine_(true);//是否屬于業務線廣告位 pm.data.setDistrict_(true);//是否有地域 pm.valid(); pm.first(); pm.businessLine(); pm.district();

輸出結果:

OPEN→ →STEP1STEP1→ →STEP2STEP2→ →STEP3STEP3→ Top9→OFF

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 欧美高清另类自拍视频在线看 | 一级做a爱片特黄在线观看 一级做a爱片特黄在线观看免费看 | 免费黄色网址在线播放 | 黑人一级大毛片 | 日韩免费看片 | 伊人久久影视 | 91久久99久91天天拍拍 | 国内免费视频成人精品 | 亚洲理论片在线观看 | 在线日韩欧美 | 高清一区二区三区免费 | 中文字幕在线播放 | 她也啪在线视频精品网站 | 久久国产亚洲欧美日韩精品 | 亚洲精品国产一区二区三区四区 | 看国产一级毛片 | 国产综合精品一区二区 | 美国三级在线 | 国产三级a三级三级午夜 | 99久久99视频 | 女人张腿让男桶免费视频网站 | 国产精品福利视频萌白酱 | 成人在线亚洲 | 狠狠色丁香婷婷综合小时婷婷 | 亚洲欧美日韩国产 | 亚洲在线播放 | 日本久久久久一级毛片 | 91成人在线播放 | 91视频国产精品 | 嫩模大尺度人体福利视频 | 青草欧美 | 亚洲品质自拍视频 | 欧美级毛片| 国产亚洲高清视频 | 91社区视频| 久久亚洲精品无码观看不卡 | 中文字幕亚洲高清综合 | 免费看成人www的网站软件 | 日韩午夜片 | 男女免费视频 | 国产综合亚洲专区在线 |