java列舉設計出狀態機
阿新 • • 發佈:2021-07-02
原理技術
package me.ele.marketing.budget.processor.helper; import org.junit.Test; import java.nio.ByteBuffer; /** * @author: 謝洪偉 * 2021/7/2 2:17 下午 */ interface Context{ ByteBuffer buffer(); State state(); void setState(State state); } interface State{ boolean process(Context context); } public enum Status implements State { XML { @Override public boolean process(Context context) { if (context.buffer().remaining() < 16) { return false; } // header 處理完 進入下一狀態 context.setState(ROOT); return true; } },ROOT { @Override public boolean process(Context context) { if (context.buffer().remaining() < 8) { return false; } // 處理 root 處理完進入終態 context.setState(FINISHED); return true; } },FINISHED{ @Override public boolean process(Context context) { return false; } }; @Test public void m1() { Context context = null; Status.XML.process(context); } }