原理技术
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);
}
}